青年歌手大奖赛_评委会打分
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 106185 Accepted Submission(s): 52594
Problem Description
青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。
Input
输入数据有多组,每组占一行,每行的第一个数是n(2
Output
对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。
Sample Input
3 99 98 97
4 100 99 98 97
Sample Output
98.00
98.50
解题思路:
1、先将最高分和最低分找出来,分别放在数组的第一位和最后一位,算总分的时候将这两个去掉;
2、iomanip里的fixed与setprecision()配合使用控制输出精度;
源代码
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n;
double N[100];
while(cin >> n)
{
double a, sum;
sum = 0;
for (int i = 0; i < n; i++)
cin >> N[i];
for (int j = 0; j < n; j++) //找出最低分
{
if (N[j] < N[0])
{
a = N[j];
N[j] = N[0];
N[0] = a;
}
}
for(int k =0;k<n-1;k++) //找出最高分
{
if (N[k] > N[n - 1])
{
a = N[k];
N[k] = N[n-1];
N[n-1] = a;
}
}
for (int i = 1; i < n - 1; i++)
sum += N[i];
cout << fixed << setprecision(2) << sum / (n - 2) << endl; //fixed与setprecision(n)配合使用控制输出精度
}
return 0;
}