福工刘德华
2017-08-03 12:49
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;
}
你的内循环死循环了。
详细分析:第一次内循环,i=0,score【9】和score【0】对比,这个可以;内循环再次执行代码,j++后变成10,但是score数组中没有下标10 的元素,无法对比;内循环第三次执行代码,j++后变成11……你的约束条件是j>=0,所以j会一直自加形成死循环。
建议修改:外循环i决定每次冒泡的元素数,第一次是10个元素,最小的元素排在最后,第二次是9个元素,最小的元素排在倒数第二个,以此类推,所以外循环从9开始,逐渐减小。内循环j则是冒泡排序从第一个元素到最后一个元素,j自加,个数总会小于等于i个。
C语言入门
926025 学习 · 20793 问题
相似问题