C语言的简单排序问题求助

图片说明

题目见图

我的代码是

#include

void main()
{
int a[5];
int i,j,c;
for (i = 0; i < 5; i++)
scanf("%d",&a[i]);
for (j = 0; j < 5; j++)
{
for (i = 0; i < 5-j; i++)
{
if (a[i]<a[i+1])
{
c=a[i];
a[i]=a[i+1];
a[i+1]=c;
}
}
}
for (i=0;i<=4;i++)
printf("%d\n",a[i]);
}

不知道为什么就是通过不了,求助。

图片说明

1个回答

 for (i = 0; i < 5-j; i++)
->
for (i = 0; i < 4; i++)
sol21
sol21 非常感谢!我知道问题在哪里了!数组越界了!非常感谢!把5-j改成4或者把a[5]改成a[6]都能通过。 再次感谢!
2 年多之前 回复
sol21
sol21 非常感谢解答。确实这么一改就对了,可是有一个地方我不是很明白,为什么4就可以5-j就不行呢,冒泡的话这样也是可以正常排序的吧
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!