C语言初学者遇到问题,是关于冒泡法排序算法的。。

2024-12-17 07:46:43
推荐回答(1个)
回答1:

已在你前面的问题中回答过了,我在回答一下吧
1、初始化时你是从数组的 下标为 1 的元素开始的;
for(i=1;i<=n;i++) //i从1 开始的 此时 数组的第0个元素的值还是不确定的
{
printf("%d号的成绩? ",i);
scanf("%f,",&score[i]);
}
2、排序的时候,你引用了数组的第0个元素参与排序,因为 第0个元素值未初始化,排序是 会出现问题
for(j=1;j<=n-1;j++)
for(i=0;i if(score[i] {temp=score[i];score[i]=score[i+1];score[i+1]=temp;}
下面的那个排序也是同样问题
3、最后输出的时候,格式化符号使用有问题,你的数组定义的都是 float 类的,而最后你使用整型的 %d 输出的,这里 会出现问题 ,应该改为
for(i=1;i<=n;i++)
printf("%d ",score[i]); // 应该改为 printf("%f ",score[i]);
4、最好不要在程序中使用 goto ,这个一般是不建议使用的,一般使用 那几种循环就可以实现