为了账号安全,请及时绑定邮箱和手机立即绑定

请问下,为什么不是用for(j=9;j>=i;j--)

/*降序排列*/

   

    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--) 得出的结果就不对呢?

正在回答

2 回答

for(i=0;i<=8;i--)  从这个式子中可以得到,score[]数组中有10 个元素  10个元素 9个空隙   需比较9次  

这也是式子中 i<=8的缘由  所以 当你进行第一轮比较时 总共比较9次   如果写为for(j=9;j>=i;j--) 第一轮比较时i=0 在进行时 就比较啦10次  是错的  希望对你有帮助   我也刚学  如果我说错啦  请指正。

1 回复 有任何疑惑可以回复我~

如果是 j=i 的话, 第一次循环, j 从 9 到 0 (因为 i = 0),

而数组 score[j-1] 就会变为 score[-1] 发生越界

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问下,为什么不是用for(j=9;j>=i;j--)

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信