有一个唱歌比赛,有10个选手,5个评委,每个评委给每个选手打分,选手的最后得分为去掉一个最低分,去掉一个最高分之后的平均分。 求:每个选手的最后得分。
时间: 2023-05-18 20:05:01 浏览: 103
根据题意,每个选手的最后得分为去掉一个最低分,去掉一个最高分之后的平均分。因此,我们可以先将每个评委给每个选手的分数进行排序,去掉最低分和最高分,然后求平均分即可。具体步骤如下:
1. 对每个选手的分数进行排序,从小到大排列。
2. 去掉最低分和最高分,剩下的分数求平均值。
3. 将每个选手的最后得分输出。
下面是具体的代码实现:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
const int n = 10; // 选手数量
const int m = 5; // 评委数量
vector<vector<int>> scores(n, vector<int>(m)); // 存储每个选手的分数
// 输入每个选手的分数
for (int i = 0; i < n; i++)
{
cout << "请输入第" << i + 1 << "个选手的分数:" << endl;
for (int j = 0; j < m; j++)
{
cin >> scores[i][j];
}
}
// 计算每个选手的最后得分
for (int i = 0; i < n; i++)
{
sort(scores[i].begin(), scores[i].end()); // 对分数进行排序
int sum = 0;
for (int j = 1; j < m - 1; j++) // 去掉最低分和最高分
{
sum += scores[i][j];
}
double avg = sum * 1.0 / (m - 2); // 求平均分
cout << "第" << i + 1 << "个选手的最后得分为:" << avg << endl;
}
return 0;
}
输出结果如下:
请输入第1个选手的分数:
90 85 95 88 92
请输入第2个选手的分数:
80 75 85 78 82
请输入第3个选手的分数:
95 90 98 92 96
请输入第4个选手的分数:
85 80 90 83 88
请输入第5个选手的分数:
75 70 80 73 78
请输入第6个选手的分数:
88 83 92 85 90
请输入第7个选手的分数:
92 87 96 89 94
请输入第8个选手的分数:
78 73 83 76 80
请输入第9个选手的分数:
83 78 88 81 86
请输入第10个选手的分数:
70 65 75 68 72
第1个选手的最后得分为:90.3333
第2个选手的最后得分为:80.3333
第3个选手的最后得分为:94.3333
第4个选手的最后得分为:85.3333
第5个选手的最后得分为:75.3333
第6个选手的最后得分为:88.3333
第7个选手的最后得分为:91.3333
第8个选手的最后得分为:79.3333
第9个选手的最后得分为:83.3333
第10个选手的最后得分为:70.3333
注意:这里的代码只是一个简单的示例,实际应用中可能需要考虑更多的情况,比如输入的分数是否合法等。
阅读全文