班上有30名学生,每个记录包括学号、姓名、三门课程的成绩和三门课程平均成绩。从键盘输入学生的学号、姓名及三门课的成绩。打印三门课程平均成绩最高分的学生记录。实现计算和查找每门课的平均分、最低分、最高分,请用链表实现
时间: 2024-10-09 07:02:03 浏览: 41
学生信息管理系统,1、每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩。
在Python中,我们可以使用字典数据结构来模拟这个场景,因为字典可以直接存储键值对,非常适合存储每个学生的成绩信息。这里我们假设已经有一个名为`Student`的类,其中包含学生的学号、姓名和三门课程的成绩属性。然后我们可以创建一个链表来保存所有学生的信息。
```python
class Student:
def __init__(self, id, name, scores):
self.id = id
self.name = name
self.scores = scores
# 创建链表节点类
class ListNode:
def __init__(self, student):
self.student = student
self.next = None
# 初始化链表
head = None
def input_student_data():
students = []
for _ in range(30):
id = int(input("请输入学生学号:"))
name = input("请输入学生姓名:")
scores = [float(score) for score in input("请输入三门课程成绩(用空格隔开):").split()]
students.append(Student(id, name, scores))
return students
def calculate_average_scores(students):
max_avg_score_student = None
max_avg_score = 0
for student in students:
total = sum(student.scores)
avg_score = total / len(student.scores)
if not max_avg_score_student or avg_score > max_avg_score:
max_avg_score_student = student
max_avg_score = avg_score
print(f"最高平均分学生:{max_avg_score_student.name} - 学号:{max_avg_score_student.id}, 平均成绩:{max_avg_score}")
students = input_student_data()
calculate_average_scores(students)
# 对于每门课的平均分、最低分、最高分,可以类似地遍历学生列表,分别计算并存储结果。如果需要单独输出,可以在计算平均分时同时更新这些值。
阅读全文