用c++编写。从键盘输入n(n≤10)个同学的三门功课成绩,调用排序函数按成绩总分由高到低进行排序,并输出排序后的结果。
时间: 2024-09-13 18:07:00 浏览: 66
要实现这个功能,我们可以使用C++的标准库中的vector和sort函数来完成。首先,定义一个结构体来存储每个同学的姓名和三门功课的成绩,然后将所有同学的信息存储在vector中。接着,编写一个比较函数来比较两个同学的成绩总分,最后使用sort函数按照成绩总分由高到低进行排序。
以下是具体的实现步骤和代码示例:
1. 定义一个结构体`Student`来存储学生的姓名和成绩。
2. 创建一个`vector<Student>`来存储所有同学的信息。
3. 输入每个同学的姓名和三门功课的成绩,并存入vector中。
4. 编写一个比较函数,用于比较两个学生之间的成绩总分。
5. 使用sort函数结合自定义的比较函数对vector中的学生信息按成绩总分进行排序。
6. 输出排序后的学生信息。
代码示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 用于sort函数
using namespace std;
// 定义学生结构体
struct Student {
string name;
int scores[3]; // 假设有三门功课
int totalScore() const { // 计算总分
return scores[0] + scores[1] + scores[2];
}
};
// 比较函数,按总分降序排序
bool compareStudents(const Student &a, const Student &b) {
return a.totalScore() > b.totalScore();
}
int main() {
int n;
cout << "请输入学生数量(n <= 10): ";
cin >> n;
vector<Student> students(n);
// 输入每个学生的信息
for (int i = 0; i < n; ++i) {
cout << "请输入第 " << i + 1 << " 个学生的姓名: ";
cin >> students[i].name;
cout << "请输入 " << students[i].name << " 的三门功课成绩: ";
for (int j = 0; j < 3; ++j) {
cin >> students[i].scores[j];
}
}
// 使用sort函数进行排序
sort(students.begin(), students.end(), compareStudents);
// 输出排序后的结果
cout << "按成绩总分从高到低的排序结果:" << endl;
for (const auto &student : students) {
cout << student.name << " 的总分是: " << student.totalScore() << endl;
}
return 0;
}
```
阅读全文