你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)
#include <stdio.h>
#define MAXN 10
int ArrayShift( int a[], 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 a[], int n, int m ){
int b[m],c[n],i,j=0;
if(m>n)//当m大于n时,一个n为一个循环周期,取余数作为移动次数
m=m%n;
for(i=n-m;i<n;i++){//将a数组的后m项存放到b数组中,方便后面还给给a数组
b[j]=a[i];
j++;
}
for(i=0;i<n-m;i++)//将a数组的前n-m项放到c数组中,最后也要还给a
c[i]=a[i];
for(i=0;i<m;i++)//a数组的前m个元素由b赋值
a[i]=b[i];
for(i=m;i<n;i++)//a数组的后n-m个元素由c赋值
a[i]=c[i-m];//注意c数组是从0开始存放的,因此此处要减m使其下标初始为0
return 0;//结束函数运行但不返回任何值
}