有5个学生的学号、姓名、三门课程的成绩,从键盘输入以上数据,计算出平均成绩,将学号、姓名、三门课程成绩、平均成绩都存放在磁盘文件stu_score。 设5名学生的学号、姓名、三门课程成绩如下:10
时间: 2023-05-31 20:18:50 浏览: 189
接收从键盘输入某班学生的学号、姓名、成绩,对学 生的成绩进行排序.zip
5星 · 资源好评率100%
### 回答1:
题目要求我们从输入的数据中计算出5个学生的学号、姓名、三门课程的成绩,再计算出每个学生的平均成绩。最后将这些数据存放在一个名为stu_score的文件中。
具体方法为:
1.获取输入的数据,将其转化为字符串类型,然后用split()方法将其分割成一个个的分数。
2.接着按照题目要求,将每个学生的学号、姓名、三门课程的成绩分别赋值给变量。
3.计算每个学生的平均成绩。
4.将学号、姓名、三门课程成绩、平均成绩写入"stu_score"文件中。
5.重复步骤2~4,将5个学生的信息全部写入文件中。
最终结果应该是这样的:
学号 姓名 课程一 课程二 课程三 平均成绩
1 张三 80 70 90 80
2 李四 90 85 80 85
3 王五 95 90 80 88.3
4 赵六 60 50 70 60
5 刘七 75 80 90 81.7
### 回答2:
001 张三 80 90 85
002 李四 75 88 92
003 王五 92 86 78
004 赵六 87 91 82
005 刘七 78 82 90
针对以上需求,我们可以利用Python编写一个程序来实现,具体实现过程如下:
1. 首先定义一个列表scores,用于存放每个学生的学号、姓名和三门课程成绩:
```python
scores = []
```
2. 然后通过循环结构,从键盘输入每个学生的信息,并将其存储在scores列表中:
```python
for i in range(5):
score = []
score.append(input("请输入第%d个学生的学号:" % (i+1)))
score.append(input("请输入第%d个学生的姓名:" % (i+1)))
for j in range(3):
score.append(int(input("请输入第%d个学生的第%d门课程成绩:" % (i+1, j+1))))
scores.append(score)
```
3. 接下来,我们根据scores列表中的数据计算每个学生的平均成绩,并将学号、姓名、三门课程成绩和平均成绩都存储在一个新的列表中:
```python
with open("stu_score.txt", "w") as f:
for score in scores:
sum_score = sum(score[2:])
avg_score = round(sum_score / 3, 1)
score.append(avg_score)
f.write("{} {} {} {} {} {}\n".format(score[0], score[1], score[2], score[3], score[4], avg_score))
```
4. 最后,将新列表中的数据写入磁盘文件stu_score中即可。
完整代码如下:
```python
# 定义一个列表,用于存放每个学生的学号、姓名和三门课程成绩
scores = []
# 从键盘输入每个学生的信息,并将其存储在scores列表中
for i in range(5):
score = []
score.append(input("请输入第%d个学生的学号:" % (i+1)))
score.append(input("请输入第%d个学生的姓名:" % (i+1)))
for j in range(3):
score.append(int(input("请输入第%d个学生的第%d门课程成绩:" % (i+1, j+1))))
scores.append(score)
# 根据scores列表中的数据计算每个学生的平均成绩,并将学号、姓名、三门课程成绩和平均成绩都存储在一个新的列表中
with open("stu_score.txt", "w") as f:
for score in scores:
sum_score = sum(score[2:])
avg_score = round(sum_score / 3, 1)
score.append(avg_score)
f.write("{} {} {} {} {} {}\n".format(score[0], score[1], score[2], score[3], score[4], avg_score))
# 将新列表中的数据写入磁盘文件stu_score中
with open("stu_score.txt", "r") as f:
for line in f:
print(line.strip())
```
注意:以上代码中的文件名可以自行更改,需要确保文件名正确并且文件存在。同时,本程序中的文件操作都采用了with语句,可以自动关闭文件,避免了忘记关闭文件导致资源泄漏的问题。
### 回答3:
这道题目需要用到基本的输入输出和计算方法,涉及到文件读写操作和平块处理。我们可以使用C++语言来实现这个需求。
首先,我们需要定义一个学生结构体,包含学号、姓名和三门课程的成绩。由于学号和成绩都是数字,在这里我们将他们的数据类型都定义为int。姓名是字符串类型,我们可以使用char数组表示。
struct Student {
int id;
char name[20];
int grade1;
int grade2;
int grade3;
};
接下来,我们需要从键盘输入5个学生的信息,可以使用for循环来实现。输入时,我们可以使用cin来读取输入,并将数据存放到对应的结构体中。代码如下:
Student students[5]; // 定义5个学生
for (int i = 0; i < 5; i++) {
cout << "请输入第" << i+1 << "个学生的信息:" << endl;
cin >> students[i].id >> students[i].name >> students[i].grade1 >> students[i].grade2 >> students[i].grade3;
}
每个学生的信息读取成功后,我们就可以开始计算平均成绩了。我们可以使用另外一个循环来遍历所有学生的成绩,并进行累加。最终,计算平均值并存放到一个变量中。代码如下:
double aver = 0;
for (int i = 0; i < 5; i++) {
aver += (double)(students[i].grade1 + students[i].grade2 + students[i].grade3) / 3.0;
}
aver/=5.0;
最后,我们可以将所有学生的信息以及平均成绩存放到一个磁盘文件中。我们可以使用ofstream来声明输出文件,然后使用循环将每个学生的信息逐个输出到文件中。最后,输出平均成绩即可。代码如下:
ofstream outfile("stu_score.txt", ios::out); // 打开输出文件
for (int i = 0; i < 5; i++) {
outfile << students[i].id << " " << students[i].name << " " << students[i].grade1 << " " << students[i].grade2 << " " << students[i].grade3 << " " << aver << endl;
}
outfile.close(); // 关闭文件
到这里,我们就完成了这个需求。完整代码如下:
#include <iostream>
#include <fstream>
using namespace std;
struct Student {
int id;
char name[20];
int grade1;
int grade2;
int grade3;
};
int main() {
Student students[5];
for (int i = 0; i < 5; i++) {
cout << "请输入第" << i+1 << "个学生的信息:" << endl;
cin >> students[i].id >> students[i].name >> students[i].grade1 >> students[i].grade2 >> students[i].grade3;
}
double aver = 0;
for (int i = 0; i < 5; i++) {
aver += (double)(students[i].grade1 + students[i].grade2 + students[i].grade3) / 3.0;
}
aver/=5.0;
ofstream outfile("stu_score.txt", ios::out); // 打开输出文件
for (int i = 0; i < 5; i++) {
outfile << students[i].id << " " << students[i].name << " " << students[i].grade1 << " " << students[i].grade2 << " " << students[i].grade3 << " " << aver << endl;
}
outfile.close(); // 关闭文件
cout << "数据已经存放在磁盘文件stu_score.txt中。" << endl;
return 0;
}
阅读全文