有10 个学生,每个学生的数据包括学号、姓名、3 门功课的成绩。从键盘输入 10个学生的数据,要求按平均成绩降序显示出所有学生的数据(包括学号、姓名、3门课成绩、平均成绩),并将其写入文本文件 result.txt 中
时间: 2023-12-15 12:45:03 浏览: 29
下面是使用 C++ 实现的代码,您可以参考一下:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
// 定义一个学生类
class Student {
public:
string id;
string name;
double grade1;
double grade2;
double grade3;
double avg_grade;
Student(string id, string name, double grade1, double grade2, double grade3) {
this->id = id;
this->name = name;
this->grade1 = grade1;
this->grade2 = grade2;
this->grade3 = grade3;
this->avg_grade = (grade1 + grade2 + grade3) / 3;
}
};
// 比较函数,用于按平均成绩降序排序
bool cmp(Student s1, Student s2) {
return s1.avg_grade > s2.avg_grade;
}
int main() {
vector<Student> students;
for (int i = 0; i < 10; i++) {
string id, name;
double grade1, grade2, grade3;
cout << "请输入学生信息:\n";
cout << "学号:";
cin >> id;
cout << "姓名:";
cin >> name;
cout << "第一门课程成绩:";
cin >> grade1;
cout << "第二门课程成绩:";
cin >> grade2;
cout << "第三门课程成绩:";
cin >> grade3;
Student student(id, name, grade1, grade2, grade3);
students.push_back(student);
}
// 按平均成绩降序排序
sort(students.begin(), students.end(), cmp);
// 显示所有学生数据并写入文件
ofstream outfile("result.txt");
if (outfile.is_open()) {
for (Student student : students) {
cout << "学号:" << student.id << ",姓名:" << student.name
<< ",成绩1:" << student.grade1 << ",成绩2:" << student.grade2
<< ",成绩3:" << student.grade3 << ",平均成绩:" << student.avg_grade << endl;
outfile << "学号:" << student.id << ",姓名:" << student.name
<< ",成绩1:" << student.grade1 << ",成绩2:" << student.grade2
<< ",成绩3:" << student.grade3 << ",平均成绩:" << student.avg_grade << endl;
}
outfile.close();
} else {
cout << "无法打开文件!" << endl;
}
return 0;
}
```
这段代码首先定义了一个 `Student` 类,然后使用 `vector` 存储 10 个学生的数据。接着,使用 `sort` 函数按平均成绩降序排序,最后将学生数据显示在控制台上,并将其写入文本文件 `result.txt` 中。