背景:
在歌手大奖赛中,经常会有一组评委给参赛选手打分(一般采取百分制)。选手最终得分的获取规则是:去掉一个评委给的最高分,去掉在一个评委给的 最低分,其余分数加和的平均值。需要说明的是,如果同时有多个评委给出最低分,那么只去掉一个最低分;同样的,如果同时有多个评委给出最高分,那么只去掉 一个最高分。现在即将召开2016年度青年歌手大奖赛,组委会会委托你为他们设定一个程序,可以自动进行选手分数的统计工作。
输入:
假设此次比赛有十个评委,每次录入十个评委的打分成绩(百分制整数)。
输出:
每组测试对应三行输出:第一行是删除的最高分;第二行是删除的最低分;第三行是选手的最终平均分。
See test cases.
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示
| 以文本方式显示
| 无限制 | 64M | 0 |
#include <stdio.h>
#include <math.h> // 包含数学函数库
int main() {
int scores[10]; // 存储十个评委的打分
int sum = 0; // 总分
int maxScore = 0; // 最高分
int minScore = 100; // 最低分
double average; // 平均分
int flooredAverage; // 向下取整的平均分
// 读取评委的分数
for (int i = 0; i < 10; i++) {
scanf("%d", &scores[i]);
sum += scores[i];
if (scores[i] > maxScore) maxScore = scores[i];
if (scores[i] < minScore) minScore = scores[i];
}
// 去掉一个最高分和一个最低分
sum -= maxScore;
sum -= minScore;
// 计算去掉最高分和最低分后的平均分
average = sum / 8.0; // 这里有8个评分参与平均分计算
flooredAverage = (int) floor(average); // 向下取整平均分
// 输出结果
printf("Canceled Max Score:%d\n", maxScore);
printf("Canceled Min Score:%d\n", minScore);
printf("Average Score:%d\n", flooredAverage); // 输出向下取整的平均分
return 0;
}