C语言大神求救! 将一维数组中的元素向右循环移动k次

2024-12-27 02:49:39
推荐回答(3个)
回答1:

#include
#include

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 scanf("%d",a+i);//接受数组
if(k==0)//没移动
{
for(i=0;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 printf("%d ",a[i]);
for(i=0;i printf("%d ",a[i]);
printf("%d\n",a[i]);//担心空格,最后一个单独输
free(a);//别忘了释放
}
return 0;
}

回答2:

什么意思?

回答3:

没意思,同一个问题你问多回啊,
我刚答过一把,这里又是你的同一问题, 不重写代码了,你自己找找