C语言对于有n个整数的数组,使其前面各数顺序向后移m个位置,让最后m个数变成最前面的m个数!

请高手看看我哪里错了。。#include<stdio.h>#defineN10intmain(){inta[N],i,j,k,m,temp;printf("请输入%d个数... 请高手看看我哪里错了。。
#include<stdio.h>
#define N 10
int main()
{
int a[N],i,j,k,m,temp;
printf("请输入%d个数字:",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("输入需要前移的数字的个数:");
scanf("%d",&m);
for(i=N-m,k=0;i<N;m--,k++)
{
temp=a[i];
for(j=N-m-1;j<=k;j--)
{
a[j+1]=a[j];
}
a[k]=temp;
}
for(i=0;i<N;i++)
printf("%d ",a[i]);
}
展开
 我来答
cpucash
2012-11-04 · TA获得超过1585个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:996万
展开全部
处理这个问题的方法有好多写法,关键看你是一次移动一个位置还是多个位置
要是一个位置,那么只要设一个tmp变量就好
要是一次移动多个位置,那么就要再设置一个数组

一次移动一个位置,那么循环移动m次就好了,
for(i=0;i<m;i++)
{
tmp=a[0];

for(j=0;j<N-1;j++)
a[i]=a[i+1]
a[N-1]=tmp;
}

要是移动多个位置,那么最好重新赋值一个数组
for(i=0;i<m;i++)
b[i+N-m]=a[i];
for(i=m;i<N;i++)
b[i]=a[i-m];
百度网友98d88f1
推荐于2017-11-28
知道答主
回答量:24
采纳率:0%
帮助的人:10万
展开全部
#include<stdio.h>
#define N 10
int main()
{
int a[N],i,j,k,m,temp;
printf("请输入%d个数字:",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("输入需要前移的数字的个数:");
scanf("%d",&m);
for(i=N-m,k=0;i<N;i++,k++) //此处i为要移动的数据的下标,只要从N-m到N-1就好
{
temp=a[i];
for(j=i-1;j>=k;j--) //上面把m--删了,这里用j=i-1代替,其余不变,可以实现题目要求
{
a[j+1]=a[j];
}
a[k]=temp;
}
for(i=0;i<N;i++)
printf("%d ",a[i]);
}
追问
为什么把m--改为i++,j=N-m-1改为j=i-1就可以了呢、??
追答
原来的for(i=N-m,k=0;i=k,这个错误也很关键,否则j循环无法执行下去
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式