项目描述
高校团委组织校园歌手比赛,进入决赛的校园歌手有10位,歌手编号从1到10进行编号。组委会随机抽取方式产生了决赛次序为:3,1,9,10,2,7,5,8,4,6。
比赛现场有5个评委为参赛的10位决赛歌手打分,分数为0~10分。歌手最后得分为去掉1个最高分和1个最低分后,剩余的3个分数的平均值。计算输出10位歌手的得分。
输入格式
输入5个评委的评分
输出格式:
输出10位歌手的得分(保留小数点后两位)
printf(“%2d号歌手得分:%.2f\n”,/输出列表/);
输入样例:
9.0 9.1 9.5 9.6 8.8
9.3 9.2 9.6 9.4 9.0
8.9 9.4 9.7 9.3 9.0
9.4 9.2 9.6 9.9 9.8
9.6 9.0 9.5 9.3 9.6
8.8 9.4 9.2 9.7 9.2
9.1 9.5 9.5 9.3 9.3
9.3 9.2 9.6 9.4 9.0
9.7 9.1 9.5 9.4 9.5
9.5 9.2 9.6 9.2 9.5
输出样例:
1号歌手得分:9.30
2号歌手得分:9.47
3号歌手得分:9.20
4号歌手得分:9.47
5号歌手得分:9.37
6号歌手得分:9.40
7号歌手得分:9.27
8号歌手得分:9.30
9号歌手得分:9.23
10号歌手得分:9.60
项目代码
#include <stdio.h>
#include <stdlib.h>
#define NUM_SINGER 10 // 歌手数量
#define NUM_JUDGE 5 // 评委数量
int main()
{
int i, j;
float scores[NUM_SINGER][NUM_JUDGE]; // 存储评委打分
float total_score; // 总得分
float max_score, min_score; // 最高分和最低分
float avg_score; // 平均分
// 输入评委打分
for (i = 0; i < NUM_SINGER; i++) {
printf("请输入第%d位歌手的评委打分:", i + 1);
for (j = 0; j < NUM_JUDGE; j++) {
scanf("%f", &scores[i][j]);
}
}
// 计算每位歌手的得分
for (i = 0; i < NUM_SINGER; i++) {
max_score = scores[i][0];
min_score = scores[i][0];
total_score = 0;
for (j = 0; j < NUM_JUDGE; j++) {
// 找出最高分和最低分
if (scores[i][j] > max_score) {
max_score = scores[i][j];
}
if (scores[i][j] < min_score) {
min_score = scores[i][j];
}
total_score += scores[i][j];
}
// 去掉最高分和最低分,求平均分
total_score = total_score - max_score - min_score;
avg_score = total_score / 3;
printf("%2d号歌手得分:%.2f\n", i + 1, avg_score);
}
return 0;
}
程序首先定义了常量 NUM_SINGER
和 NUM_JUDGE
,分别表示歌手数量和评委数量。然后使用一个二维数组 scores
存储每个歌手的评委打分。接着,使用两个循环分别输入评委打分和计算每位歌手的得分。对于每位歌手,我们先找出最高分和最低分,然后去掉这两个分数,求剩余分数的平均值,即为该歌手的得分。最后,使用 printf
函数输出每位歌手的得分。
注意,在格式化字符串中,%2d
表示输出一个占据两个字符宽度的整数,如果实际的数字不足两位,则在前面补空格;%.2f
表示输出一个保留两位小数的浮点数。