#include<iostream>
#include<cstring>
using namespace std;
void move(int*p,int n,int m)
{
int*s,t;
s=p;
for(t=0;t<n;t++){
if((t+m)<n)
*s=*(p+t+m);
else
*s=*(p+t+m-n);
*s++;
}
strcpy(p,s);
}
int main()
{
int m,n;
cin>>n>>m;
int a[n+1];
cin>>a;
move(a,n,m);
for(int i=0;i<n;i++)
cout<<a[i]<<' ';
return 0;
}
说明一下,如果你是循环移动,第四点就不算问题。