编写一个程序,从键盘输人一批学生的成绩信息,每个学生的成绩信息包括学号、姓名以及8门课的成绩。然后按照平均成绩由高到低的顺序输出学生的学号、姓名、8门课的成绩以及平均成绩。用c++STL的容器vector和算法sort实现该功能。
时间: 2024-05-04 22:21:59 浏览: 21
下面是一个参考实现,其中使用了结构体来存储学生的信息,使用vector来存储学生信息结构体的数组,使用sort算法进行排序:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Student {
string id;
string name;
double scores[8];
double average;
};
int main() {
vector<Student> students;
// 输入学生信息
int n;
cout << "请输入学生数量:";
cin >> n;
for (int i = 0; i < n; i++) {
Student s;
cout << "请输入第" << i + 1 << "个学生的信息:" << endl;
cout << "学号:";
cin >> s.id;
cout << "姓名:";
cin >> s.name;
cout << "8门课的成绩:";
for (int j = 0; j < 8; j++) {
cin >> s.scores[j];
}
double sum = 0;
for (int j = 0; j < 8; j++) {
sum += s.scores[j];
}
s.average = sum / 8;
students.push_back(s);
}
// 按平均成绩排序
sort(students.begin(), students.end(), [](const Student& s1, const Student& s2) {
return s1.average > s2.average;
});
// 输出学生信息
cout << "按照平均成绩由高到低的顺序输出学生的信息:" << endl;
for (int i = 0; i < n; i++) {
cout << "学号:" << students[i].id << " ";
cout << "姓名:" << students[i].name << " ";
cout << "8门课的成绩:";
for (int j = 0; j < 8; j++) {
cout << students[i].scores[j] << " ";
}
cout << "平均成绩:" << students[i].average << endl;
}
return 0;
}
```
这个程序中,首先通过vector容器存储学生信息结构体,然后使用sort算法按照平均成绩进行排序,最后输出排好序的学生信息。在这个程序中,我们使用了lambda表达式作为sort算法的比较函数,这个函数的作用是判断两个学生结构体的平均成绩的大小关系。