当前许多歌手大奖赛评分时,为了体现公平,在评委给出分数后统计平均得分时,都会去掉最高分和最低分。编写程序,读入评委打分(分数都是整数,评委人数大于等于5,小于等于50),去掉两个最高分和两个最低分,计算并输出平均得分(小数点后保留两位有效数字)。 c语言
时间: 2024-11-06 12:19:08 浏览: 54
Java歌手比赛评委打分-按照设计好的流水线去掉一个最高分和一个最低分计算出平均成绩.docx
在C语言中,你可以使用数组来存储评委的打分,然后通过循环和指针操作来去掉最高分和最低分。以下是一个简单的示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SCORES 50
int main() {
int scores[MAX_SCORES];
int n, i;
printf("请输入评委人数 (5 到 50) : ");
scanf("%d", &n);
if (n < 5 || n > 50) {
printf("输入错误! 评委人数应在5到50之间.\n");
return 1;
}
// 读取所有评委分数
for (i = 0; i < n; i++) {
printf("请输入第 %d 位评委的分数: ", i + 1);
scanf("%d", &scores[i]);
}
// 排序分数(从低到高)
qsort(scores, n, sizeof(int), compare);
// 去掉最高和最低分
if (n > 4) {
scores[0] = scores[1]; // 第一位替换第二位
scores[n - 1] = scores[n - 2]; // 最后一位替换倒数第二位
n -= 2; // 减去两个元素
} else {
printf("只有四个评委,无法去除最高和最低分.\n");
return 1;
}
// 计算并打印平均分
double average = (double)(scores[0] + scores[1]) / 2;
printf("去掉最高分和最低分后的平均得分: %.2f\n", average);
return 0;
}
// 比较函数,用于qsort排序
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
```
这个程序首先读取评委人数和他们的分数,然后对分数进行排序。接着,它会替换最高的两个分数和最低的两个分数,然后计算剩余分数的平均值。注意,这个程序假设评委们会给出非负整数分数。
阅读全文