这段C语言代码为什么运行结果输出数组里老是有一个位置是乱码?

核心代码有三段,第一段循环数组赋值,第二段冒泡排序,第三段循环输出数组。格式应该比较清晰。希望有时间的高手能帮我看看,我实在是DEBUG不出来了。第一段和第三段连在一起没... 核心代码有三段,第一段循环数组赋值,第二段冒泡排序,第三段循环输出数组。格式应该比较清晰。希望有时间的高手能帮我看看,我实在是DEBUG不出来了。第一段和第三段连在一起没问题,第二段和第三段连在一起也没问题。第二段单独仔细看过,没问题。求告知问题到底出在哪里!!!!
#include<stdio.h>
main()
{ int a,b,c,balboa[100],i,j,k,z;
while(scanf("%d",&a)!=EOF){
if(a==0)
return 0;
else{
for(b=0;b<a;b++){
scanf("%d",&c);
if(c<0)
c=c*(-1);
balboa[b]=c;
}
for(i=0;i<a;i++){
for(j=0;j<a;j++){
if(balboa[j]<balboa[j+1]){
k=balboa[j];
balboa[j]=balboa[j+1];
balboa[j+1]=k;
}
}
}
for(z=0;z<a;z++){
if(z!=(a-1))
printf("%d ",balboa[z]);
else
printf("%d\n",balboa[z]);
}

}
}
return 0;
}
展开
 我来答
这个人真不是我
2014-10-10 · 超过26用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:57.1万
展开全部
问题出在“if(balboa[j]<balboa[j+1]){”这里数组里总共有a个数,j的范围是0到a-1,所以当j等于a-1时,j+1就是a,这时balboa[a]已经数组越界了,所以你会把a个数范围之外的元素交换到前面,而这些元素是未初始化的,所以会有乱码。

所以j的范围应该是0到a-1,你试试,这时候其实你算法还是有点小问题的,等你先改进这一步,再说。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式