用 STL 的容器 vector 和算法 sort 实现以下功能:从键盘输入学生的成绩信息,每个信息 包括:学号、姓名以及 8 门课的成绩。然后按照平均成绩由高到低的顺序输出学生的学号、 姓名以及平均成绩。
时间: 2024-03-17 22:47:04 浏览: 73
编写程序,输入并保存5名学生的信息,计算出平均分,再按照成绩从高到低的顺序输出他们的信息 学生信息包括学号、姓名、成绩
好的,我可以帮你解决这个问题。
首先,我们需要定义一个结构体来存储学生的信息,包括学号、姓名以及 8 门课的成绩。代码如下:
```c++
struct student {
string id; // 学号
string name; // 姓名
vector<double> grades; // 8 门课的成绩
double average; // 平均成绩
};
```
然后,我们可以定义一个 vector 来存储所有的学生信息:
```c++
vector<student> students;
```
接下来,我们可以从键盘输入学生的成绩信息,并计算每个学生的平均成绩:
```c++
int n; // 学生数量
cin >> n;
for (int i = 0; i < n; i++) {
student s;
cin >> s.id >> s.name;
for (int j = 0; j < 8; j++) {
double grade;
cin >> grade;
s.grades.push_back(grade);
}
s.average = accumulate(s.grades.begin(), s.grades.end(), 0.0) / s.grades.size();
students.push_back(s);
}
```
最后,我们可以使用算法 sort 对所有学生按照平均成绩排序,并输出学生的学号、姓名以及平均成绩:
```c++
sort(students.begin(), students.end(), [](const student& a, const student& b) {
return a.average > b.average;
});
for (const auto& s : students) {
cout << s.id << " " << s.name << " " << s.average << endl;
}
```
完整代码如下:
阅读全文