.编写演讲比赛评分程序,假定有10个选手,5个评委,选手的得分是去掉一个最高分和一个最低分的平均分。计算出每个选手的平均分,并按从高分到低分的顺序输出所有选手的得分。c语言
时间: 2024-11-09 07:29:08 浏览: 5
实验一、进程调度,设计一个有 N个进程共行的进程调度程序
5星 · 资源好评率100%
在C语言中,编写这样一个演讲比赛评分程序可以分为以下几个步骤:
1. 定义结构体:创建一个结构体`Candidate`来存储每个选手的信息,包括选手编号和分数数组。
```c
typedef struct {
int id;
int scores[5]; // 用于存储5位评委的评分
} Candidate;
```
2. 输入数据:通过循环获取每位选手的评分以及选手编号。
```c
Candidate candidates[10];
for (int i = 0; i < 10; i++) {
printf("请输入选手 %d 的5个评委评分:", i+1);
for (int j = 0; j < 5; j++) {
scanf("%d", &candidates[i].scores[j]);
}
}
```
3. 计算平均分:对于每个选手,计算去掉最高分和最低分后的平均分。
```c
for (int i = 0; i < 10; i++) {
sort(candidates[i].scores, candidates[i].scores + 5); // 对评分数组排序
candidates[i].scores[2] = candidates[i].scores[3] =
(candidates[i].scores[0] + candidates[i].scores[4]) / 2; // 取中间两个数的平均值作为最终得分
}
```
4. 按照得分排序:将所有选手按照得分从高到低排序。
```c
int compare(const void *a, const void *b) {
return (*(Candidate **) a)->scores[2] - (*(Candidate **) b)->scores[2]; // 比较的是最后得到的平均分
}
qsort(candidates, 10, sizeof(Candidate), compare); // 使用快速排序或其他排序算法
```
5. 输出结果:打印每个选手及其得分。
```c
for (int i = 0; i < 10; i++) {
printf("选手 %d 得分:%.2f\n", candidates[i].id, candidates[i].scores[2]);
}
```
阅读全文