本程式模擬歌唱比賽評分機制:10 位評委打分 (1~100),去除一個最高分與一個最低分後,計算剩餘 8 位評委分數的平均值作為最終得分。
輸入 10 位評委分數,使用排序法將分數由小到大排列,去除首尾(最低、最高),計算中間 8 分平均,並輸出被去除的最高/最低分、總分與平均分。
num 10,宣告 float score[10]。sort() 以氣泡排序法由小到大排序。sum / 8 並輸出結果。/* 程式標頭註解 */
#include <stdio.h>
#define num 10
void star(void);
void sort(float score[]);
int main()
{
int i;
float sum = 0, average;
float score[10];
star();
printf("請輸入每個評委給您打的分數\n");
for(i = 0; i < num; i++)
{
printf("第%2d各評委打的分數為:", i+1);
scanf("%f", &score[i]);
}
sort(score);
for(i = 1; i < num-1; i++) sum += score[i];
average = sum / 8;
printf("\n去掉的最高分為:%0.2f\n", score[num-1]);
printf("\n去掉的最低分為:%0.2f\n", score[0]);
printf("\n去掉最高分最低分後,您的總分為:%0.2f\n", sum);
printf("\n去掉最高分最低分後,您的平均分為:%0.2f\n", average);
printf("\n哈哈, 謝謝您的合作!\nGOOD BYE!\n");
star();
return 0;
}
void sort(float score[])
{
int i, j;
float t;
for(i = 0; i < num; i++)
{
for(j = i; j < num; j++)
{
if(score[i] > score[j])
{
t = score[i];
score[i] = score[j];
score[j] = t;
}
}
}
}
void star(void)
{
int i;
for(i = 0; i < 60; i++) printf("*");
printf("\n");
}

qsort() 標準庫函數簡化排序程式碼。