有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数.

#include<iostream>
using namespace std;
int main()
{
void move(int *,int n,int m);
int number[20],n,m,i;
cout<<"how many number?";
cin>>n;
cout<<"input"<<n<<"numbers"<<endl;
for(i=0;i<n;i++)
cin>>number[i];
cout<<"how many places do you want move?";
cin>>m;
move(number,n,m);
cout<<"Now they are:"<<endl;
for(i=0;i<n;i++)
cout<<number[i]<<" ";
cout<<endl;
return 0;
}
朋友帮一下手解释下的被调函数
【void move(int *array,int n,int m)
{
int *p,array_end;
array_end=*(array+n-1);
for(p=array+n-1;p>array;p--)
*p=*(p-1);
*array=array_end;
m--;
if(m>0)move(array,n,m);
}】
void move(int *array,int n,int m)
{/*参数:数组基址,元素档橘个数n,移动次数m*/
int *p,array_end;
/*暂存数组尾元素的值*/
array_end=*(array+n-1);
/*从数组倒数第二个开始,全部后伍拆移一位*/
for(p=array+n-1;p>array;p--)
*p=*(p-1);
/*数组尾值移到首位*/
*array=array_end;
/*记录本次操作*/
m--;
/*如果预定的次数行橘团没有完成,继续上述步骤*/
if(m>0)move(array,n,m);
}