题目
青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。
解题思路
本题要求去掉对高分和最低分,所以我们需要搜索出最高分和最低分,
核心代码
for(int i = 0;i < n;i++)
{
cin >> graed[i];
if(graed[i] > graed[max])
max = i;
if(graed[i] < graed[min])
min = i;
}
for(int i = 0;i < n;i++)
{
if(i == max||i == min)
continue;
sum += graed[i];
}
我的思路就是把最高分和最低分的位置搜索到然后保存下来,在最后算算总和,相加的时候跳过最大数和最小数
完整代码
#include<iostream>
using namespace std;
int main()
{
int n;
double graed[105];
int max = 0;
int min = 0;
double sum = 0;
double average;
while(cin >>n)
{
max = 0;
min = 0;
sum = 0;
for(int i = 0;i < n;i++)
{
cin >> graed[i];
if(graed[i] > graed[max])
max = i;
if(graed[i] < graed[min])
min = i;
}
for(int i = 0;i < n;i++)
{
if(i == max||i == min)
continue;
sum += graed[i];
}
average = sum/(n-2);
printf("%.2f\n",average);
}
return 0;
}