C++结果输出完毕到return 0出错,求解
答案:2 悬赏:60
解决时间 2021-02-20 07:18
- 提问者网友:冷场帝
- 2021-02-19 15:58
原题简单十个整数排序,最后在VC那已经正常输出结果,尝试过在最后一次printf之后随便输出一个东西,正常输出,但是实际运行时就在return 0之前掐死,显示需要调试,求解
#include
int main()
{
int a[10],i=0,num=0,j=0,b[10];
while(i<10)
{
scanf("%d",&a[i]);
b[i]=a[i];
i++;
}
i=0;
while(i<10)
{
while(j<10)
{
if(b[i]>=b[j])
num++;
j++;
}
a[num]=b[i];
j=0;
i++;
num=0;
}
while(i>0)
{
if(i>1)
printf("%d ",a[i]);
else
printf("%d\n",a[i]);
i--;
}
return 0;
}
最佳答案
- 二级知识专家网友:社会水太深
- 2021-02-19 17:27
if(b[i]>=b[j])
num++;上面这一段里面的num++某些情况下有可能导致num等于10,后面你又把num作为a的索引,a的访问就会越界,还有最后输出时i的循环是从10开始的,也会导致a的访问越界,这两点是出错的原因
至于怎么改,不懂你的意图,没法改
全部回答
- 1楼网友:木子香沫兮
- 2021-02-19 18:28
while(i>0)
{
if(i>1)
printf("%d ",a[i]); //第一次循环的时候,这个地方是a[10]
else
printf("%d\n",a[i]);
i--;
}
这段代码之前 i = 10 , 所以a[10] 数组越界,, 然后报错了。。
我要举报
大家都在看
推荐资讯