编写一个程序,从键盘输人一批学生的成绩信息,每个学生的成绩信息包括学号、姓名以及8门课的成绩。然后按照平均成绩由高到低的顺序输出学生的学号、姓名、8门课的成绩以及平均成绩。用类定义学生成绩信息。用c++STL的容器vector和算法sort实现该功能。
时间: 2024-05-07 18:22:19 浏览: 82
以下是实现该功能的C++代码:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
class Student {
public:
string id;
string name;
vector<double> scores;
double average;
Student(string id, string name, vector<double> scores) {
this->id = id;
this->name = name;
this->scores = scores;
double sum = 0;
for (double score : scores) {
sum += score;
}
this->average = sum / scores.size();
}
};
bool compare(const Student& s1, const Student& s2) {
return s1.average > s2.average;
}
int main() {
vector<Student> students;
int n;
cout << "请输入学生人数:";
cin >> n;
for (int i = 0; i < n; i++) {
string id, name;
vector<double> scores;
cout << "请输入第" << i + 1 << "个学生的学号、姓名和8门课的成绩(用空格分隔):";
cin >> id >> name;
for (int j = 0; j < 8; j++) {
double score;
cin >> score;
scores.push_back(score);
}
students.push_back(Student(id, name, scores));
}
sort(students.begin(), students.end(), compare);
cout << "按照平均成绩由高到低的顺序输出学生的学号、姓名、8门课的成绩以及平均成绩:" << endl;
for (Student student : students) {
cout << student.id << " " << student.name;
for (double score : student.scores) {
cout << " " << score;
}
cout << " " << student.average << endl;
}
return 0;
}
```
程序首先定义了一个学生类,包括学号、姓名、8门课成绩和平均成绩,然后通过vector容器存储多个学生对象。输入学生信息后,使用sort算法按照平均成绩从高到低排序,最后依次输出每个学生的信息。
阅读全文