各位大神,现在这个程序可以运行。但是我不太明白那个递归调用的循环体。如何通过end 跟*p就实现了数组的变换,希望指点迷津。
//有n个整数,顺序向后移动m个位置,最后m个数变成最前面的m个数
//每次移动一个,end为每次替换的数
void move(int array[20],int n,int m){
int p,end;
end=(array+n-1);
for(p=array+n-1;p>array;p--)
p=(p-1);
*array=end;
m--;
//递归调用,当循环次数m减少到0的时候,停止调用
if(m>0)move(array,n,m);
}
int main(){
int num[20],n,m,i;
printf("共有多少数\n");
scanf("%d",&n);
printf("请输入n个数\n");
for(i=0;i<n;i++)
scanf("%d",&num[i]);
printf("你想要后退多少\n");
scanf("%d",&m);
move(num,n,m);
printf("现在它们是\n");
for(i=0;i<n;i++)
printf("%d ",num[i]);
printf("\n");
return 0;
}