设有 10 名歌手(编号为 1-10)参加歌咏比赛,另有 6 名评委打分,每位歌手的得分从键盘输入:先提示“Please input singer’s score: ”,再依次输入第 1 个歌手的 6 位评委打分 (10 分制,分数为整型,分数之间使用空格分隔),第 2 个歌手的 6 位评委打分…以此类推。计算出每位歌手的最终得分(扣除一个最高分和一个最低分后的平均分,最终得分保留 2 位小数),最后按最终得分由高到低的顺序输出每位歌手的编号及最终得分。要求用结构体实现以上功能,程序存入 test35.c。
时间: 2023-05-15 15:08:11 浏览: 135
好的,这是一个关于歌咏比赛的问题,我可以回答。以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define SINGER_NUM 10
#define JUDGE_NUM 6
struct Singer {
int id;
double score;
};
int cmp(const void *a, const void *b) {
struct Singer *s1 = (struct Singer *)a;
struct Singer *s2 = (struct Singer *)b;
return s2->score - s1->score;
}
int main() {
struct Singer singers[SINGER_NUM];
int scores[SINGER_NUM][JUDGE_NUM];
// 输入每位歌手的得分
for (int i = 0; i < SINGER_NUM; i++) {
printf("Please input singer %d's score: ", i + 1);
for (int j = 0; j < JUDGE_NUM; j++) {
scanf("%d", &scores[i][j]);
}
}
// 计算每位歌手的最终得分
for (int i = 0; i < SINGER_NUM; i++) {
int max = -1, min = 11;
double sum = 0;
for (int j = 0; j < JUDGE_NUM; j++) {
if (scores[i][j] > max) {
max = scores[i][j];
}
if (scores[i][j] < min) {
min = scores[i][j];
}
sum += scores[i][j];
}
sum -= max + min;
singers[i].id = i + 1;
singers[i].score = sum / (JUDGE_NUM - 2);
}
// 按最终得分由高到低排序并输出
qsort(singers, SINGER_NUM, sizeof(struct Singer), cmp);
for (int i = 0; i < SINGER_NUM; i++) {
printf("%d %.2lf\n", singers[i].id, singers[i].score);
}
return 0;
}
```
这个程序使用了结构体来存储每位歌手的编号和最终得分,使用了快速排序算法来按最终得分排序并输出。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)