慕粉1600176492
2017-03-24 17:28:04
#include"stdio.h"
#include"stdlib.h"
typedef?struct
{
? int?ranking;
?? int??sum;???????//學生的總成績??
}Student;
int?main()
{
int?i,j;
Student?stu[7];
stu[0].sum=25;stu[1].sum=85;stu[2].sum=90;stu[3].sum=60;stu[4].sum=80;stu[5].sum=40;
stu[0].ranking=1;
for(i=0;i<6;i++)
{
if(i>0)
{
stu[i].ranking=stu[i-1].ranking+1;
}
}
for(i=0;i<6;i++)
{
for(j=0;j<5-1;j++)
{
if(stu[j].sum<stu[j+1].sum)
{
stu[6].ranking?=?stu[j].ranking;
stu[j].ranking?=?stu[j+1].ranking;
stu[j+1].ranking=stu[6].ranking;
? }
}
}
for(i=0;i<6;i++)
{
printf("%d名的分數為%d\n",stu[i].ranking,stu[i].sum);
}
}輸出結果不對,是不是冒泡排序出錯了
2 回答


qq_愿時光安好_04050009
TA貢獻2條經驗 獲得超0個贊
應該是
int i, j;
int n; // n代表要排序的個數
for (i = n-1; i > 0; i--) // 也可以都從i, j都從0開始 那么i就代表排序趟數
for (j = 0; j < i; j++)
{
if(arr[j] > arr[j+1])
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
不過我覺得這么寫更直觀 第一次兩兩交換 浮出一個最大數到n-1的位置上 n-1上已有序, i--?
如果有不同意見歡迎指正
?建立一個臨時結構體, 再套里面
- 2 回答
- 0 關注
- 1898 瀏覽
添加回答
舉報
0/150
提交
取消