要求将一维数组a[]中的元素循环右移m次,如a[]={1,2,3,4,5}右移3次a[]={3,4,5,1,2},求指点代码有何问题。

求教+是要求一步到位的那种#include<stdio.h>#definen5voidmain(){inta[n],b[n],m,d,i;for(i=0;i<n;i++)... 求教+是要求一步到位的那种

#include<stdio.h>
#define n 5
void main()
{
int a[n],b[n],m,d,i;
for(i=0;i<n;i++) a[i]=i+1;
printf("右移前数组a[]=");
for(i=0;i<n;i++) printf("%4d",a[i]);
printf("\n");
printf("右移次数:");scanf("%d",&m);
i=0;
while(i<n)
{ d=(i+m)%5;
b[d]=a[i];
i++;
}
a[i]=b[i];
printf("右移后数组a[]=");
for(i=0;i<n;i++) printf("%4d",a[i]);
printf("\n");
}
展开
 我来答
嘿_行
2011-04-17 · TA获得超过158个赞
知道答主
回答量:190
采纳率:0%
帮助的人:154万
展开全部
小错误,细心一下就可以了如下:while循环后的这句是多余的 a[i]=b[i]; 最后的输出应该是b[i]不是a[i] 更改:for(i=0;i<n;i++) printf("%4d",a[i]);中的a[i]改为b[i]
王爱飞waffaw
2011-04-16 · TA获得超过317个赞
知道小有建树答主
回答量:353
采纳率:0%
帮助的人:218万
展开全部
你把代码改成下面的样子吧,就可以了

#include <cstdio>
#include <iostream>
#define n 5
int main()
{
int a[n],b[n],m,d,i;
for(i=0;i<n;i++) a[i]=i+1;
printf("右移前数组a[]=");
for(i=0;i<n;i++) printf("%4d",a[i]);
printf("\n");
printf("右移次数:");scanf("%d",&m);
i=0;
while(i<n)
{
for(int iter = 0; iter < n; iter++)
{
d=(i+m)%5;
b[d]=a[i];

}
i++;
}
for(int iter = 0; iter < n; iter++)
a[iter]=b[iter];

printf("右移后数组a[]=");
for(i=0;i<n;i++)
printf("%4d",a[i]);
printf("\n");

system("PAUSE");
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhongzunru
2011-04-16 · TA获得超过499个赞
知道小有建树答主
回答量:231
采纳率:0%
帮助的人:226万
展开全部
#define MAX_LEN 1000
void LoopMove(char* pStr,int m)
{
int n = strlen(pStr)-m;
char temp[MAX_LEN];
strcpy(temp,pStr+n);
strcpy(temp+m,pStr);
*(temp+strlen(pStr)) = '\0';
strcpy(pStr,temp);
}
这个比较简单。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tian_yf
2011-04-16 · TA获得超过599个赞
知道小有建树答主
回答量:365
采纳率:100%
帮助的人:476万
展开全部
请将a[i]=b[i];改成 *a=&b; 就行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式