小幸福10
2017-06-27 13:21
/*降序排列*/
for(i=0; i<=8; i++)
{
for(j=9;j>i;j--)
{
if(score[j-1]<score[j])
{
jxpl=score[j];
score[j]=score[j-1];
score[j-1]=jxpl;
}
}
}
printf("%s","降序排列:");
for(i=0;i<10;i++)
{
if(i!=9)
printf("%d,",score[i]);
else
printf("%d",score[i]);
}
为什么这里用 for(j=9;j>=i;j--) 得出的结果就不对呢?
for(i=0;i<=8;i--) 从这个式子中可以得到,score[]数组中有10 个元素 10个元素 9个空隙 需比较9次
这也是式子中 i<=8的缘由 所以 当你进行第一轮比较时 总共比较9次 如果写为for(j=9;j>=i;j--) 第一轮比较时i=0 在进行时 就比较啦10次 是错的 希望对你有帮助 我也刚学 如果我说错啦 请指正。
如果是 j=i 的话, 第一次循环, j 从 9 到 0 (因为 i = 0),
而数组 score[j-1] 就会变为 score[-1] 发生越界
C语言入门
926021 学习 · 20793 问题
相似问题