:有N个学生,每个学生有3门课的成绩,从键盘输入学生的信息(包括学号,姓名,三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud.dat”(二进制文件)中;再读盘并以表格形式在显示器上输出。
时间: 2024-01-01 21:05:56 浏览: 94
好的,这是一个涉及文件操作和数据处理的问题。我可以给你提供一个C++语言的实现思路。
首先,你需要定义一个结构体来存储每个学生的信息,包括学号、姓名和三门课成绩。代码如下:
```c++
struct Student {
char id[20];
char name[20];
float score[3];
};
```
接下来,你需要从键盘输入每个学生的信息,并计算出平均成绩。代码如下:
```c++
int n; // 学生个数
float sum[3] = {0}; // 每门课程的总成绩
Student stu;
ofstream outfile("stud.dat", ios::binary); // 打开文件
cout << "请输入学生人数:";
cin >> n;
for (int i = 0; i < n; i++) {
cout << "请输入第" << i+1 << "个学生的信息:" << endl;
cout << "学号:";
cin >> stu.id;
cout << "姓名:";
cin >> stu.name;
cout << "成绩:";
for (int j = 0; j < 3; j++) {
cin >> stu.score[j];
sum[j] += stu.score[j];
}
outfile.write((char *)&stu, sizeof(stu)); // 写入文件
}
outfile.close(); // 关闭文件
// 计算平均成绩
float avg[3];
for (int i = 0; i < 3; i++) {
avg[i] = sum[i] / n;
}
```
最后,你需要从文件中读取数据,并以表格形式在显示器上输出。代码如下:
```c++
ifstream infile("stud.dat", ios::binary); // 打开文件
cout << "学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分" << endl;
while (infile.read((char *)&stu, sizeof(stu))) { // 读取文件
float s = 0;
cout << stu.id << "\t" << stu.name << "\t";
for (int i = 0; i < 3; i++) {
cout << stu.score[i] << "\t";
s += stu.score[i];
}
cout << s / 3 << endl; // 输出平均分
}
infile.close(); // 关闭文件
```
这就是一个简单的实现思路,你可以根据自己的需求进行修改和完善。
阅读全文