`sort` 函數邏輯錯誤:
- `maxsum=sum[i]` 初始化錯誤,應從未排名者中找最大。
- 內層循環 `j=i+1` 漏掉 `i` 本身。
- 排名變量 `x` 遞增邏輯混亂。
void sort(Student s[]) {
int sum[5], rank[5] = {0};
for (int i = 0; i < 5; ++i)
sum[i] = s[i].chinese + s[i].math + s[i].computer + s[i].english;
for (int r = 1; r <= 5; ++r) { // 排名 1~5
int maxSum = -1, idx = -1;
for (int i = 0; i < 5; ++i) {
if (rank[i] == 0 && sum[i] > maxSum) { // 未排名且總分最大
maxSum = sum[i];
idx = i;
}
}
if (idx != -1) {
rank[idx] = r;
s[idx].rank = r;
}
}
}
(因篇幅略,核心修正同上)