(HDU2014 C++) 青年歌手大奖赛_评委会打分

青年歌手大奖赛_评委会打分

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;
}

猜你喜欢

转载自blog.csdn.net/qq_38780240/article/details/81535753