C语言程序求改错 将一个数插入到一个数组中

#include"stdio.h"voidsub1(inta[10]){inti,j,k;for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(a[j... #include "stdio.h"
void sub1(int a[10])
{
int i,j,k;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{k=a[j];
a[j]=a[j+1];
a[j+1]=k;}
}
void sub2(int b[],int k)
{
int i;
for(i=9;i>=0;i--)
{if(k<b[i])
{b[i+1]=b[i];b[i]=k;}
else {b[i+1]=k;break;}}
}
void main()
{
int i,a[10],n;
printf("please input ten numbers: \n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sub1(a);
printf("please input a number: \n");
scanf("%d",&n);
sub2(a,n);
for(i=0;i<11;i++)
printf("%d ",a[i]);
}
sub1是对10个数升序排序,sun2是将一个数插入到数组中仍按升序排序,但我的程序输出最后一个永远是10

求帮忙改错
展开
 我来答
Sixsix_
推荐于2017-12-16
知道答主
回答量:43
采纳率:0%
帮助的人:19万
展开全部
1、你的a[10]数组只定义了10个。。亲。。你输出的时候,输出了11个。。第11个是非法的呢。。没有分配的空间的。。。

2、你得自己学会调试呢。。比如你执行完sub1()的时候,你输出下。。如果正确,那么肯定就在sub2()出错啦。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风雷九州
2015-01-23 · TA获得超过3025个赞
知道大有可为答主
回答量:1127
采纳率:100%
帮助的人:413万
展开全部
1、数组a只有10个元素,怎么还能插入一个元素呢,那数组不都越界了吗?

a[10]改成a[11]就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式