题目描述 公务员面试现场打分。有7位考官,从键盘输入若干组成绩,每组7个分数(百分制),去掉一个最高分和一个最低分,输出每组的平均成绩。 输入描述: 一行,输入7个整数(0~100),代表7个成绩,用空格分隔。 输出描述: 一行,输出去掉最高分和最低分的平均成绩,小数点后保留2位,每行输出后换行。

解题思路 1.可以通过对比找出最高成绩和最低成绩,然后将七个成绩相加再减去max和min求平均值。 2.通过sort将输入的数组进行排序,然后将中间五个相加后取平均值。

代码 1

#include<iostream>
#include<iomanip>  //C++中浮点数保留小数点的有文件要有此文件

using namespace std;

int main()
{
    int val;
    while(cin >> val)
    {
        int a[8];
        a[0]=val;
        int max=val;
        int min=val;
        for(int i=1;i<7;++i)
        {
            cin>>a[i];
            if(max<a[i])
                max=a[i];//max始终等于最大的那个
            if(min>a[i])
                min=a[i];//min始终等于最小的那个
        }//这个for循环的目的是找出最大值max和最小值min
        float result;
        result=(float)((a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[0]-max-min)*1.0/5);//求出平均值
        cout<<fixed<<setprecision(2)<<result<<endl;//设置要保留的小树点点数
    }
}

2

#include<iostream>
#include<algorithm>
#include<iomanip>
using namespace std;

int main(){
    float val;
    while(cin >> val)
    {
        float a[8];
        a[0] = val;
        for(int i = 1 ; i < 7; i++) {
            cin >> a[i];
        }
        sort(a, a + 7);//这里采用了排序的方法找到最大值和最小值
        float sum = 0;
        for(int i = 1; i < 6; i++) {//除去最大最小值后求平均值
            sum += a[i];
        }
        cout << fixed << setprecision(2) << sum / 5 << endl;//设置要保留的小树点点数
    }
    return 0;
}