某学习小组有5个人,每个人的信息包括:学号、姓名和两门课成绩。要求从键盘上输入他们的信息,把这些信息以文件形式存在磁盘上。然后从磁盘文件读入学生信息,求出平均成绩以及最高成绩者的信息(学号、姓名和成绩)并在屏幕上输出。 要求:(1)设计一个结构体类型 student 来保存每个学生的信息:学号、姓名和成绩, 5个学生的信息保存在一个 student 类型的数组中。- (2)将输入、求平均成绩以及输出最高成绩者信息的功能分别用独立的函数实现。.
时间: 2024-02-06 21:12:38 浏览: 49
我明白了你的问题。以下是可以解决你的问题的C++代码:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
const int NUM_OF_STUDENTS = 5;
struct student {
string number;
string name;
double score1;
double score2;
double average;
};
void input(student* students) {
for (int i = 0; i < NUM_OF_STUDENTS; i++) {
cout << "请输入第" << i + 1 << "个学生的信息:" << endl;
cout << "学号:";
cin >> students[i].number;
cout << "姓名:";
cin >> students[i].name;
cout << "成绩1:";
cin >> students[i].score1;
cout << "成绩2:";
cin >> students[i].score2;
students[i].average = (students[i].score1 + students[i].score2) / 2;
}
}
void writeToFile(student* students) {
ofstream file("students.txt");
for (int i = 0; i < NUM_OF_STUDENTS; i++) {
file << students[i].number << " " << students[i].name << " " << students[i].score1 << " " << students[i].score2 << " " << students[i].average << endl;
}
file.close();
}
void readFromFile(student* students) {
ifstream file("students.txt");
student maxScoreStudent = students[0];
double totalScore = 0;
for (int i = 0; i < NUM_OF_STUDENTS; i++) {
file >> students[i].number >> students[i].name >> students[i].score1 >> students[i].score2 >> students[i].average;
totalScore += students[i].average;
if (students[i].average > maxScoreStudent.average) {
maxScoreStudent = students[i];
}
}
file.close();
double averageScore = totalScore / NUM_OF_STUDENTS;
cout << "平均成绩:" << averageScore << endl;
cout << "最高成绩者信息:" << endl;
cout << "学号:" << maxScoreStudent.number << endl;
cout << "姓名:" << maxScoreStudent.name << endl;
cout << "成绩:" << maxScoreStudent.average << endl;
}
int main() {
student students[NUM_OF_STUDENTS];
input(students);
writeToFile(students);
readFromFile(students);
return 0;
}
```
在这个程序中,我们首先定义了一个包含学号、姓名、两门成绩和平均成绩的结构体 student。然后,定义了三个函数 input、writeToFile 和 readFromFile。
在 input 函数中,我们利用循环输入每个学生的信息,并计算他们的平均成绩。
在 writeToFile 函数中,我们打开一个文件,将每个学生的信息写入文件中,以便后续读取。
在 readFromFile 函数中,我们从文件中读取每个学生的信息,并计算平均成绩和最高成绩者。最后,我们在屏幕上输出结果。
在 main 函数中,我们首先定义了一个 student 类型的数组,通过调用 input、writeToFile 和 readFromFile 三个函数完成了程序的功能。
希望这个代码对你有所帮助!
阅读全文