编写程序,为丰富校园文化生活,学校拟组织一场歌手大赛,从参赛选手中选拔出十名相对突出的学生,授予“校园十大歌手”称号。比赛之中设置有评委组,每名选手演唱完毕之后会由评委组的十名评委打分。为保证比赛公平公正,防止作弊和恶意打分,计算得分时会先去掉最高分和最低分,再计算平均分
时间: 2024-11-14 09:23:58 浏览: 47
全国软件专业人才设计与开发大赛题目选拔试题
为了编写这样一个程序,你可以按照以下步骤进行:
1. **准备数据结构**:首先,需要一个二维数组或列表来存储每位选手的表演信息,包括他们的ID和分数,以及一个空的列表来保存最终结果。
2. **获取评分**:对于每位选手,读取评委们的评分,将其存储在一个临时列表中。
3. **处理异常**:检查输入的评分是否有效(例如,是否都是数字),并且确保每个选手都有十个评分。
4. **计算平均分**:对去除最高分和最低分后的评分进行排序,然后取中间的八个分数求平均值,作为该选手的最终得分。
5. **更新结果**:将每位选手的ID和最终得分添加到结果列表中。
6. **筛选前10名**:根据最终得分对结果进行排序,并保留排名前10的选手。
7. **输出结果**:显示或保存获得“校园十大歌手”称号的选手及其得分。
下面是一个简单的Python示例:
```python
scores = []
# 假设从文件或数据库读取的评分数据
for singer_id, judge_scores in scores_data.items():
# 排序并去头尾两个极端值
sorted_scores = sorted(judge_scores)[1:-1]
# 计算平均分
average_score = sum(sorted_scores) / len(sorted_scores)
# 将结果保存
result.append((singer_id, average_score))
# 根据平均分选出前10名
top_10_singers = sorted(result, key=lambda x: x[1], reverse=True)[:10]
# 输出结果
for singer, score in top_10_singers:
print(f"选手{singer}得分为:{score}")
```
阅读全文