青年歌手大奖赛_评委会打分
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 162907 Accepted Submission(s): 79614
Problem Description
青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。
Input
输入数据有多组,每组占一行,每行的第一个数是n(2<n<=100),表示评委的人数,然后是n个评委的打分。
Output
对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。
Sample Input
3 99 98 97
4 100 99 98 97
Sample Output
98.00
98.50
Author
lcy
Source
C语言程序设计练习(三)
问题链接:HDU 青年歌手大奖赛_评委会打分
问题简述:(略)
问题分析:
按Markdown格式重写了题解,旧版题解参见参考链接。
这个题没有必要用数组来存储读入的数据,读入数据流中的数据进行计算处理就可以了。
OJ做题,浮点数的话,计算用double类型,输出按"%f"格式。
求和、求最大值和求最小值都是套路,套路需要玩得很熟才行。
用C++语言来编程的话,求最大值和最小值就可以直接使用函数来实现。
程序说明:(略)
参考链接:HDU 青年歌手大奖赛_评委会打分【入门】
题记:(略)
AC的C语言程序如下:
/* HDU 青年歌手大奖赛_评委会打分 */#include <stdio.h>int main(void){int n;while (scanf("%d", &n) != EOF) {/* 声明变量并且初始化 */int score, sum = 0, maxs = 0, mins = 1000, i;/* 读入n个分数,并且求和、算最大值和最小值 */for (i = 1; i <= n; i++) {scanf("%d", &score);sum += score;maxs = (score > maxs) ? score : maxs;mins = (score < mins) ? score : mins;}/* 输出结果 */printf("%.2f\n", (double)(sum - maxs - mins) / (n -2));}return 0;}
AC的C++语言程序如下:
/* HDU 青年歌手大奖赛_评委会打分 */#include <iostream>#include <cstdio>using namespace std;int main(){int n;while (scanf("%d", &n) != EOF) {/* 声明变量并且初始化 */int score, sum = 0, maxs = 0, mins = 1000, i;/* 读入n个分数,并且求和、算最大值和最小值 */for (i = 1; i <= n; i++) {scanf("%d", &score);sum += score;maxs = max(maxs, score);mins = min(mins, score);}/* 输出结果 */printf("%.2f\n", (double)(sum - maxs - mins) / (n - 2));}return 0;}