使用c语言,校园歌手大赛共有10位评委对每一位参赛选手进行评分,评分规则是:从10位评委的评分中,除去一个最高分和一个最低分,剩余的分数取平均值,作为选手最后的得分。请编写一个程序,输入某选手的10个分数(也可以生成随机数代替输入,分值在[80,100]之间),输出其最后的得分(结果保留两位小数)
时间: 2024-03-05 17:55:06 浏览: 107
好的,这是一个用 C 语言编写的程序,实现对选手得分的处理:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
int main() {
int scores[N];
int i, j, temp;
float sum = 0;
float final_score;
// 生成随机分数
srand((unsigned)time(NULL));
for (i = 0; i < N; i++) {
scores[i] = rand() % 21 + 80;
}
// 排序并计算得分
for (i = 0; i < N - 1; i++) {
for (j = i + 1; j < N; j++) {
if (scores[i] > scores[j]) {
temp = scores[i];
scores[i] = scores[j];
scores[j] = temp;
}
}
}
for (i = 1; i < N - 1; i++) {
sum += scores[i];
}
final_score = sum / 8;
// 输出结果
printf("选手的分数为:");
for (i = 0; i < N; i++) {
printf("%d ", scores[i]);
}
printf("\n");
printf("选手的最终得分为:%.2f\n", final_score);
return 0;
}
```
该程序首先定义了一个常量 `N`,表示评委的数量。然后使用 `srand` 和 `rand` 函数生成 10 个随机分数,范围在 80 到 100 之间。接着,使用冒泡排序算法将分数从小到大排序,然后计算去掉最高分和最低分后的 8 个分数的平均值,作为最终得分。最后,输出选手的分数和最终得分。
注意到,由于 C 语言没有内置的保留小数位数的函数,所以需要使用 `%f` 输出浮点数,并结合格式控制符 `"%.2f"` 来保留两位小数。
阅读全文