简单c语言习题:唱歌比赛有n名选手,m名评委。 编程实现: (1)评分标准为:去掉两个最高分和两个最低分后取平均分。(2)每位选手演唱完毕后,现场显示每位评委的打分, 和选手的最后得分。 (3)比赛结束后,从高分到低分,显示所有选手的成绩。
时间: 2023-06-23 21:08:26 浏览: 75
以下是一个简单的C语言程序,可以实现上述功能:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_PLAYER 100
#define MAX_JUDGE 10
// 计算去掉最高分和最低分后的平均分
double get_average_score(int scores[], int num_judge) {
int max_score = scores[0], min_score = scores[0];
int sum = scores[0];
for (int i = 1; i < num_judge; i++) {
if (scores[i] > max_score) {
max_score = scores[i];
}
if (scores[i] < min_score) {
min_score = scores[i];
}
sum += scores[i];
}
return (double)(sum - max_score - min_score) / (num_judge - 2);
}
int main() {
int num_player, num_judge;
int scores[MAX_JUDGE];
double final_scores[MAX_PLAYER] = {0};
double average_score;
printf("请输入选手人数和评委人数:");
scanf("%d%d", &num_player, &num_judge);
// 循环处理每个选手
for (int i = 0; i < num_player; i++) {
printf("请输入第%d位选手的成绩:\n", i + 1);
// 读入每个评委的分数
for (int j = 0; j < num_judge; j++) {
printf("请输入第%d位评委的分数:", j + 1);
scanf("%d", &scores[j]);
}
// 计算平均分
average_score = get_average_score(scores, num_judge);
// 输出每个评委的分数和最终得分
printf("每位评委的分数:");
for (int j = 0; j < num_judge; j++) {
printf("%d ", scores[j]);
}
printf("\n最终得分为:%.2lf\n", average_score);
// 保存最终得分
final_scores[i] = average_score;
}
// 对最终得分进行排序
for (int i = 0; i < num_player - 1; i++) {
for (int j = i + 1; j < num_player; j++) {
if (final_scores[i] < final_scores[j]) {
double temp = final_scores[i];
final_scores[i] = final_scores[j];
final_scores[j] = temp;
}
}
}
// 输出所有选手的成绩
printf("所有选手的成绩:\n");
for (int i = 0; i < num_player; i++) {
printf("%.2lf\n", final_scores[i]);
}
return 0;
}
```
在程序中,我们首先读入选手人数和评委人数,然后循环处理每个选手。对于每个选手,我们读入每个评委的分数,并计算去掉最高分和最低分后的平均分。然后输出每个评委的分数和最终得分,并保存最终得分。最后对所有选手的最终得分进行排序,并输出。