c语言输入5个数(已知从大到小)再输一个数n,将n插入数组,如输入6 5 4 3 1 2 输出6 5 4 3 2 1 我怎么错

#include<stdio.h>intmain(){intn,i,a[6];for(i=0;i<5;i++)scanf("%d",&a[i]);scanf("%d",&... #include<stdio.h>
int main() { int n,i,a[6];
for(i=0;i<5;i++)
scanf("%d ",&a[i]);
scanf("%d",&n);

for(i=0;i<5;i++)
{if(n<a[i])
break;
}
a[i+1]=n;
for(i=i+2;i<=4;i++)
a[i+1]=a[i];
for(i=0;i<6;i++)
printf("%d\n",a[i]);

return 0;
}
展开
 我来答
terranlong
2012-11-26 · TA获得超过7295个赞
知道大有可为答主
回答量:2660
采纳率:66%
帮助的人:4279万
展开全部
已改,看注释

#include<stdio.h>
int main()
{
int n,i,a[6], pos;
for(i=0;i<5;i++)
scanf("%d ",&a[i]);
scanf("%d",&n);
for(i=0;i<5;i++)
{
if(n>a[i]) // 大于
break;
}
pos = i;
for(i=5;i>pos;i--) // 先从后面开始覆盖
a[i]=a[i-1];
a[pos] = n; // 最后才插入n
for(i=0;i<6;i++)
printf("%d\n",a[i]);
return 0;
}
松甜恬0Je4ba
2012-11-26 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:4137万
展开全部
for(i=0;i<5;i++)
{if(n>a[i]) //这里应该是大于吧 不是小于 从大到小,不是从小到大
break;
}

还有一个问题就是
a[i+1]=n;
for(i=i+2;i<=4;i++)
a[i+1]=a[i];

修改为
int j;
for(j=5;j>i;j++)
a[j]=a[j-1];
a[i] = n;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0de7a34eb
2012-11-26
知道答主
回答量:26
采纳率:0%
帮助的人:9.2万
展开全部
注意覆盖数组元素!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
亚洲狐
2012-11-26 · TA获得超过305个赞
知道小有建树答主
回答量:543
采纳率:0%
帮助的人:250万
展开全部
先后移,再覆盖。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式