题目描述 公务员面试现场打分。有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;
}