cpp排序某个学科的成绩 已知:小明数学85,英语:78;小李数学62,英语88;小张数学92,英语65;按照数学成绩由大到小进行排序,如果数学成绩相同按照英语成绩比较由大到小排序,程序必须要用排序算法输出结果
时间: 2024-05-01 18:17:24 浏览: 14
可以使用结构体来表示每个学生的信息,然后使用快速排序算法进行排序,排序的依据是先按照数学成绩进行排序,如果数学成绩相同则按照英语成绩排序。
下面是示例代码:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
// 定义结构体表示学生信息
struct Student {
string name; // 姓名
int mathScore; // 数学成绩
int engScore; // 英语成绩
};
// 按照数学成绩和英语成绩进行比较
bool cmp(const Student& a, const Student& b) {
if (a.mathScore == b.mathScore) {
return a.engScore > b.engScore;
}
return a.mathScore > b.mathScore;
}
int main() {
Student students[] = {
{"小明", 85, 78},
{"小李", 62, 88},
{"小张", 92, 65}
};
int n = sizeof(students) / sizeof(students[0]);
sort(students, students + n, cmp);
cout << "按照数学成绩和英语成绩的排序结果为:" << endl;
for (int i = 0; i < n; i++) {
cout << students[i].name << "\t" << students[i].mathScore << "\t" << students[i].engScore << endl;
}
return 0;
}
```
输出结果为:
```
按照数学成绩和英语成绩的排序结果为:
小张 92 65
小明 85 78
小李 62 88
```