题目描述:
编写一个函数ArrayShift( int arr[], int n, int m),该函数将数组arr中每个元
素循环向右移m个位置。
如图所示


题目描述:
编写一个函数ArrayShift( int arr[], int n, int m),该函数将数组arr中每个元
素循环向右移m个位置。
如图所示


#include <stdio.h>
#define MAXN 10
int ArrayShift(int arr[], int n, int m);
int main()
{
int a[MAXN], n, m;
int i;
scanf("%d %d", &n, &m);
for (i = 0; i < n; i++) scanf("%d", &a[i]);
ArrayShift(a, n, m);
for (i = 0; i < n; i++) {
if (i != 0) printf(" ");
printf("%d", a[i]);
}
printf("\n");
return 0;
}
int ArrayShift(int arr[], int n, int m) {
int i, j;
m = m % n;
int temp[100];
for (j = 0; j < n; j++) {
temp[j] = arr[j];
}
for (i = 0; i < n; i++) {
if (i >= (n - m)) {
arr[i + m - n] = temp[i];
}
else {
arr[i + m] = temp[i];
}
}
}