這是一個經典的 ACM 程式設計競賽題目(英文金曲大賽)。題目要求讀取多組測試資料,每組包含 7 位評委的分數與參賽者姓名,去掉一個最高分與一個最低分後,計算剩餘 5 分的平均,輸出姓名與保留兩位小數的得分。
%.2f)。while (scanf("%f", &num[0]) != EOF) 迴圈讀取多組資料。#include <stdio.h>
void sort(float score[]);
int main() {
int i;
char name[30];
float num[7], sum, average;
while (scanf("%f", &num[0]) != EOF) {
sum = 0.0;
for (i = 1; i < 7; i++) scanf("%f", &num[i]);
scanf("%s", name);
sort(num); // 由小到大排序
for (i = 1; i < 6; i++) sum += num[i]; // 去掉首尾
average = sum / 5;
printf("%s %.2f\n", name, average);
}
return 0;
}
void sort(float score[]) {
int i, j;
float t;
for (i = 0; i < 7; i++) {
for (j = i; j < 7; j++) {
if (score[i] > score[j]) {
t = score[i];
score[i] = score[j];
score[j] = t;
}
}
}
}

輸入: 10 10 10 10 10 10 9 xiaoyuanwang 0 0 0 0 0 0 0 beast 輸出: xiaoyuanwang 10.00 beast 0.00
%.2f