2. 编写程序。天津市大学软件学院组合歌唱比赛,每当输入 10 个评委的分数后,求该选手的最后得分 并输出(设 10 个评委按照以下打分原则为选手打分:去掉一个最高分和一个最低分,剩下的求平均 分作为选手的最后得分)。
时间: 2023-05-19 10:02:16 浏览: 76
以下是一个示例程序,可以实现上述功能:
```python
scores = []
while True:
try:
score = float(input("请输入评委的分数:"))
if score < 0 or score > 100:
print("分数必须在0到100之间,请重新输入")
continue
scores.append(score)
if len(scores) == 10:
scores.sort()
scores = scores[1:-1]
avg_score = sum(scores) / len(scores)
print("该选手的最终得分为:", avg_score)
scores = []
except ValueError:
print("请输入有效的数字")
```
这个程序会不断循环,等待用户输入评委的分数。当输入的分数数量达到10个时,程序会计算出该选手的最终得分,并输出。注意,程序会对输入的分数进行一些基本的检查,确保它们在0到100之间。如果输入的不是数字,程序会提示用户重新输入。
相关问题
有一个唱歌比赛,有10个选手,5个评委,每个评委给每个选手打分,选手的最后得分为去掉一个最低分,去掉一个最高分之后的平均分。 求:每个选手的最后得分。
根据题意,每个选手的最后得分为去掉一个最低分,去掉一个最高分之后的平均分。因此,我们可以先将每个评委给每个选手的分数进行排序,去掉最低分和最高分,然后求平均分即可。具体步骤如下:
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
注意:这里的代码只是一个简单的示例,实际应用中可能需要考虑更多的情况,比如输入的分数是否合法等。
某选手参加歌唱比赛,共10个评委评分,评分是0到10分之间的整数,去掉最高分和最低分后,输出选手的平均得分,保留2位小数。
好的,我知道了。这个问题其实可以使用一个简单的算法来解决。首先,将所有评委给的分数从小到大排序,然后去掉最高分和最低分(即第一个和最后一个分数),将剩余的分数求平均数即可。下面是具体的计算步骤:
1. 输入选手的10个评分,存入一个列表中。
2. 对列表中的分数进行排序。
3. 去掉最高分和最低分,即将列表中的第一个和最后一个分数删除。
4. 计算剩余分数的平均值,保留2位小数。
下面是Python代码实现:
```python
scores = [] # 存储10个评分的列表
# 输入10个评分
for i in range(10):
score = int(input("请输入第%d个评分:" % (i+1)))
scores.append(score)
# 对评分列表进行排序
scores.sort()
# 去掉最高分和最低分
scores = scores[1:-1]
# 计算平均分数
avg_score = sum(scores) / len(scores)
# 输出结果
print("选手的平均得分为:%.2f" % avg_score)
```
这样,我们就得到了选手的平均分数。