指针实现
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<stdbool.h>
//函数实现思路 暂存数组再写回
void NumberMov(int* data, int m,int n)
{
int b[100] = { 0 };
int i = 0;
for (i = 0; i < m; i++) { // 暂存数组
b[i] = *(data + n-1 - i);
}
for (i = n-1; i >=m; i--) { // 移动原数组
*(data + i) = *(data + i - m);
}
for (i = 0; i < m; i++) { // 写回原数组
*(data + i) = b[m-1-i];
}
}
// 从后开始整体后移 在原数组上找需要的数
void NumberMov(int *data,int n,int m){
for (int i = n; i >= 0; i--){ // 整体后移m位
*(data + m + i) = *(data + i);
}
for (int j = 0; j < m; j++){ // 前m个移位
*(data + j) = *(data + n + j);
}
}
int main()
{
int n;
int i;
scanf("%d", &n);
int a[100] = { 0 };
int m;
for (i = 0; i < n;i++)
{
scanf("%d", a + i);
}
scanf("%d", &m);
NumberMov(a, m,n);//函数调用
for (i = 0; i < n; i++) {
printf("%d ", *(a+i));
}
return 0;
}