某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。 任务:输入10名同学的3门科目成绩,学号随机生成(请保证学号的唯一性),先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前五名名学生的学号和总分,把排序后的结果保存到文件score.txt文件中。
时间: 2023-06-15 08:03:49 浏览: 1162
NJ 奖学金 C++
5星 · 资源好评率100%
好的,这个任务可以使用Python来实现。以下是代码实现:
```python
# 定义学生类
class Student:
def __init__(self, id, chinese, math, english):
self.id = id
self.chinese = chinese
self.math = math
self.english = english
self.total_score = chinese + math + english
# 定义排序规则
def __lt__(self, other):
if self.total_score == other.total_score:
if self.chinese == other.chinese:
return self.id < other.id
else:
return self.chinese > other.chinese
else:
return self.total_score > other.total_score
# 生成10名学生的成绩
import random
students = []
for i in range(10):
chinese = random.randint(60, 100)
math = random.randint(60, 100)
english = random.randint(60, 100)
id = i + 1
students.append(Student(id, chinese, math, english))
# 对学生进行排序
students.sort()
# 输出前5名学生的学号和总分
with open("score.txt", "w") as f:
for i in range(5):
student = students[i]
f.write("学号:{}, 总分:{}\n".format(student.id, student.total_score))
print("学号:{}, 总分:{}".format(student.id, student.total_score))
```
这个程序会随机生成10名学生的成绩,并按照规则对学生进行排序,最后输出前5名学生的学号和总分,并将排序后的结果保存到文件score.txt中。
阅读全文