这是一个关于歌手大奖赛的问题。在比赛中,有10个评委为参赛选手打分,分数范围为1~100分。选手最终得分是去掉一个最高分和一个最低分后,剩下8个分数的平均值。同时,还需要考虑对评委评分进行裁判,找出最公平和最不公平的评委。请编写一个程序实现这个功能。用c语言
时间: 2024-02-12 08:04:28 浏览: 88
C语言实现歌手大奖赛计分程序
5星 · 资源好评率100%
好的,以下是使用C语言实现该程序的示例代码:
```c
#include <stdio.h>
int main() {
int scores[10];
int i, max_score, min_score, total_score = 0;
float avg_score, avg_scores[10], fair_score, unfair_score;
// 让用户输入10个评委的评分
for (i = 0; i < 10; i++) {
printf("请输入第%d个评委的评分:", i+1);
scanf("%d", &scores[i]);
}
// 找到最高分和最低分,并将它们从数组中删除
max_score = scores[0];
min_score = scores[0];
for (i = 0; i < 10; i++) {
if (scores[i] > max_score) {
max_score = scores[i];
}
if (scores[i] < min_score) {
min_score = scores[i];
}
}
for (i = 0; i < 10; i++) {
if (scores[i] == max_score || scores[i] == min_score) {
continue;
}
total_score += scores[i];
}
// 计算剩下8个分数的平均值
avg_score = total_score / 8.0;
// 输出选手的最终得分
printf("选手的最终得分为:%.2f\n", avg_score);
// 计算每个评委的平均分数,并找出最公平和最不公平的评委
for (i = 0; i < 10; i++) {
fair_score += scores[i];
}
fair_score = fair_score / 10.0;
for (i = 0; i < 10; i++) {
avg_scores[i] = (total_score + max_score + min_score - scores[i]) / 8.0;
if (avg_scores[i] == fair_score) {
printf("第%d个评委的评分最公平,其平均分数为%.2f分。\n", i+1, avg_scores[i]);
}
if (avg_scores[i] > unfair_score) {
unfair_score = avg_scores[i];
}
}
for (i = 0; i < 10; i++) {
if (avg_scores[i] == unfair_score) {
printf("第%d个评委的评分最不公平,其平均分数为%.2f分。\n", i+1, avg_scores[i]);
}
}
return 0;
}
```
该程序中使用了一个整型数组 `scores[10]` 来存储10个评委的评分,使用循环语句和 `scanf()` 函数获取用户输入。然后,使用两个 `for` 循环分别找到最高分和最低分,并将它们从数组中删除。接着,使用一个循环计算剩下8个分数的总和,并使用一个浮点型变量 `avg_score` 计算平均值,最终输出选手的最终得分。
接着,使用两个循环分别计算每个评委的平均分数和平均分数的数组 `avg_scores[10]`,然后使用一个循环找出最不公平的评委的平均分数,并输出其对应的评委编号和平均分数。最后,使用一个循环找出最公平的评委的平均分数,并输出其对应的评委编号和平均分数。
请注意,该程序假设评委的评分都是合法的,并且没有重复的分数。如果需要进行输入校验和去重,可以在输入分数时进行处理。
阅读全文