某班期末考试科目为数学、英语和计算机,有最多不超过30人参加考试,考试后要求: 1)计算每个学生的总分和平均分; 2)按总分成绩由高到低排出成绩的名次; 3)打印出名次表,表格内包括学生学号、各科分数、总分和平均分; 4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。 【提示】:用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。
时间: 2024-03-02 09:52:49 浏览: 233
计算机专业期末考试复习笔记.zip
好的,这是一个典型的数组操作题,我给你提供一下思路:
1. 首先确定学生人数,通过输入或者手动设置均可;
2. 声明一个二维数组 score 用来存放每个学生的各科成绩;
3. 声明一个一维数组 num 用来存放每个学生的学号;
4. 声明一个一维数组 sum 用来存放每个学生的总分;
5. 声明一个一维数组 aver 用来存放每个学生的平均分;
6. 通过循环输入每个学生的学号和各科成绩,并计算出每个学生的总分和平均分;
7. 将每个学生的总分和平均分存入 sum 和 aver 数组中;
8. 对每个学生的总分进行排序,得到每个学生的名次;
9. 通过循环打印出每个学生的学号、各科分数、总分和平均分;
10. 通过循环查找出任意输入的学号在班级中的排名及其考试分数。
这里给出一个参考代码,你可以根据自己的实际情况进行修改:
```python
import numpy as np
# 确定学生人数
n = int(input("请输入学生人数:"))
# 声明数组
score = np.zeros((n, 3), dtype=np.int) # 每个学生的各科成绩
num = np.zeros(n, dtype=np.int) # 每个学生的学号
sum = np.zeros(n, dtype=np.int) # 每个学生的总分
aver = np.zeros(n, dtype=np.float) # 每个学生的平均分
# 输入每个学生的学号和各科成绩,并计算总分和平均分
for i in range(n):
num[i] = int(input("请输入第%d个学生的学号:" % (i+1)))
score[i, 0] = int(input("请输入第%d个学生的数学成绩:" % (i+1)))
score[i, 1] = int(input("请输入第%d个学生的英语成绩:" % (i+1)))
score[i, 2] = int(input("请输入第%d个学生的计算机成绩:" % (i+1)))
sum[i] = np.sum(score[i])
aver[i] = sum[i] / 3
# 对每个学生的总分进行排序,得到每个学生的名次
rank = np.argsort(-sum) + 1
# 打印出每个学生的学号、各科分数、总分和平均分
print("学号\t数学\t英语\t计算机\t总分\t平均分\t名次")
for i in range(n):
print("%d\t%d\t%d\t%d\t%d\t%.2f\t%d" % (num[i], score[i, 0], score[i, 1], score[i, 2], sum[i], aver[i], rank[i]))
# 查找任意输入的学号在班级中的排名及其考试分数
search_num = int(input("请输入要查找的学生的学号:"))
for i in range(n):
if num[i] == search_num:
print("该学生的排名为第%d名,总分为%d分。" % (rank[i], sum[i]))
break
else:
print("没有找到该学生的信息。")
```
阅读全文