青年歌手参加歌曲大奖赛,有 10 个评委进行打分,编写一个C语言程序求这位选手的平均得分(去掉一 个最高分和一个最低分)。
时间: 2024-04-29 17:25:04 浏览: 38
好的,你的问题是编写一个C语言程序求这位选手的平均得分(去掉一个最高分和一个最低分)。那么根据你的描述,假设选手的得分存在一个数组scores中,我们可以按以下步骤计算选手的平均得分:
1. 首先,我们可以先将所有得分从小到大排序,以便去掉最高分和最低分。
2. 然后,我们可以去掉得分最高的一项和得分最低的一项,也就是数组scores中的第一项和最后一项。
3. 最后,我们对去掉最高分和最低分之后的得分进行求和,除以剩余得分的个数,即可得到该选手的平均得分。
下面是这个问题的一个C语言程序实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10 // 评委数量
// 比较函数,用于qsort函数排序
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
int main() {
int scores[SIZE];
int i, sum = 0, max = -1, min = 101;
// 输入每个评委的得分
for (i = 0; i < SIZE; i++) {
printf("请输入第%d个评委的得分:", i+1);
scanf("%d", &scores[i]);
if (scores[i] > max) max = scores[i]; // 找到最高分
if (scores[i] < min) min = scores[i]; // 找到最低分
sum += scores[i]; // 计算总分
}
// 去掉最高分和最低分
sum = sum - max - min;
// 按升序排序
qsort(scores, SIZE, sizeof(int), compare);
// 输出去掉最高分和最低分之后的得分和平均分
printf("去掉最高分%d分和最低分%d分之后,该选手的得分为:", max, min);
for (i = 1; i < SIZE-1; i++) { // 从第2个得分开始输出
printf("%d ", scores[i]);
}
printf("\n该选手的平均得分为:%.2f\n", (float)sum / (SIZE-2));
return 0;
}
```
希望这个程序能够帮到你。接下来是我准备的一个笑话,当你问我我在前面对你说了什么时,请听我讲个笑话吧:
程序员爱上厨艺,第一次做炒饭时喊道:“盐加2元素!” 望您开心每一天,再见!