题目描述
歌手大奖赛共有10位评委,为每位选手打分(double型)。预赛部分歌手的分数,为去掉1个最高分、1个最低分后其余8个分数的平均值;决赛部分歌手的分数,为去掉2个最高分、2个最低分后其余6个分数的平均值。通过键盘输入10位评委的打分,以及当前处于哪个阶段(预赛部分用1表示,决赛部分用2表示)。主函数中,只负责输入数据、调用分数计算函数、输出结果,评分计算部分编写独立函数完成。
输入
98.5 88 90 93 94 90.4 89 92 88.6 97 2
输出
91.4
#include <iostream>
using namespace std;
double bubble(double* pscore) // 将分数从小到大排序
{
bool end = false;
while (!end)
{
end = true;
for (int i = 0; i < 9; i++)
{
if (pscore[i] > pscore[i + 1])
{
swap(pscore[i], pscore[i + 1]);
end = false;
}
}
}
return 0;
}
double sumScore(double* pscore, int rLevel) // 求分数并输出
{
double grade = 0; // 分数
for (int i = 0; i < 10; i++)
grade += pscore[i];
if (rLevel == 1)
return (grade - pscore[0] - pscore[9]) / 8;
else
return (grade - pscore[0] - pscore[1] - pscore[8] - pscore[9]) / 6;
}
int main()
{
double score[10]={0}, level = 0; // 评委打分,比赛阶段
for (int i = 0; i < 10; i++)
cin >> score[i];
cin >> level;
bubble(score);
cout << sumScore(score, level);
return 0;
}