#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i,k,n;
int *a;
while(scanf("%d%d",&k,&n)!=EOF)//接受k,n
{
if(n==0)break; //如果n为0,我觉得直接就结束吧,别管k了
a=(int*)malloc(sizeof(int)*n);//分配数组
if(a==NULL)break;//内存分配失败退出,不大会
for(i=0;i<n;i++)
scanf("%d",a+i);//接受数组
if(k==0)//没移动
{
for(i=0;i<n-1;i++)
printf("%d ",a[i]);
printf("%d\n",a[i]);//担心最后多个空格,单独输出
}
k%=n;//循环的,移n+1次和移1次效果是一样的
//下面就是从a[k-1]和a[k]中间切一刀,先输出后半,再输前半
for(i=n-k;i<n;i++)
printf("%d ",a[i]);
for(i=0;i<n-k-1;i++)
printf("%d ",a[i]);
printf("%d\n",a[i]);//担心空格,最后一个单独输
free(a);//别忘了释放
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考