题目描述
现在有 n(n≤1000) 位评委给选手打分,分值从 0 到 10。需要去掉一个最高分,去掉一个最低分(如果有多个最高或者最低分,也只需要去掉一个),剩下的评分的平均数就是这位选手的得分。现在输入评委人数和他们的打分,请输出选手的最后得分,精确到 2 位小数。
输入格式
第一行输入一个正整数 n,表示有 n 个评委。
第二行输入 n 个正整数,第 i 个正整数表示第 i 个评委打出的分值。
输出格式
输出一行一个两位小数,表示选手的最后得分。
输入输出样例
输入 #1复制
5 9 5 6 8 9
输出 #1复制
7.67
说明/提示
数据保证,3≤n≤1000,每个评委打出的分值为为 0 到 10(含 0 与 10)之间的整数。
代码
#include <iostream>
#include <cmath>
#include <iomanip>
#include <string>
#include <stdio.h>
using namespace std;
#define int long long
signed main()
{
int n;
cin >> n;
int score[n];
int max_num = -1, min_num = 11;
double average = 0;
//读取的同时找出最大最小数,求平均数的时候再减去即可
for (int i = 0; i < n; i++) {
cin >> score[i];
if (score[i] > max_num) max_num = score[i];
if (score[i] < min_num) min_num = score[i];
average += score[i];
}
average = average - max_num - min_num;
average /= (n - 2);
//格式控制包含头文件iomanip即可,两个函数自己去了解一下
cout << fixed << setprecision(2) << average;
return 0;
}