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

为什么打完成绩降序这段会变成空白的结果?

int cjjx()

{

    int i,j,temp;

    int score[10]={67,98,75,63,82,79,81,91,66,84};

    for(i=0;i<10;i++)

    {

        for(j=9;j>=0;j++)

        {

            if(score[i]<score[j])

            temp=score[i];

            score[i]=score[j];

            score[j]=temp;

        }

    }

     printf("成绩降序排列为:%d\n");

}

int main()

{

cjjx();

return 0;

}

正在回答

1 回答

你的内循环死循环了。

详细分析:第一次内循环,i=0,score【9】和score【0】对比,这个可以;内循环再次执行代码,j++后变成10,但是score数组中没有下标10 的元素,无法对比;内循环第三次执行代码,j++后变成11……你的约束条件是j>=0,所以j会一直自加形成死循环。

建议修改:外循环i决定每次冒泡的元素数,第一次是10个元素,最小的元素排在最后,第二次是9个元素,最小的元素排在倒数第二个,以此类推,所以外循环从9开始,逐渐减小。内循环j则是冒泡排序从第一个元素到最后一个元素,j自加,个数总会小于等于i个。

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

举报

0/150
提交
取消

为什么打完成绩降序这段会变成空白的结果?

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