C++编程解决:期末考试结束了,数学成绩已经出来,数学老师请你帮忙编写一个程序,可以帮助老师对班级所有同学的考试分数按照由高到第低进行排序,并输出按照成绩排序后每个同学的学号、姓名、数学成绩。 输入 第一行是一个整数n(n<=100),代表班级的总人数 接下来n行,每行有3个数据,第一个数据是某个同学的学号,第二个数据是该同学的姓名的拼音(拼音不含空格),第三个数据是该同学的数学成绩(成绩是整数) 输出 按照数学成绩由高到低输出每个同学的学号、姓名、数学成绩,每行含1个同学的3个数据,3个数据用空格隔开。(如果出现多个同学数学成绩相同,则按照学号由小到大输出,不存在多个同学学号相同的情况
时间: 2024-03-22 17:41:16 浏览: 261
好的,以下是一个解决方案:
```
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct Student {
string id; // 学号
string name; // 姓名
int score; // 数学成绩
bool operator < (const Student& s) const { // 定义比较运算符,用于排序
if (score == s.score) {
return id < s.id;
}
return score > s.score;
}
};
int main() {
int n;
cin >> n;
vector<Student> students(n);
for (int i = 0; i < n; i++) {
cin >> students[i].id >> students[i].name >> students[i].score;
}
sort(students.begin(), students.end()); // 按照定义的比较运算符排序
for (int i = 0; i < n; i++) {
cout << students[i].id << " " << students[i].name << " " << students[i].score << endl;
}
return 0;
}
```
此程序使用了 STL 中的 vector 和 sort 函数。定义了结构体 Student,其中包含了学号、姓名和数学成绩。sort 函数默认使用 < 运算符进行排序,因此通过定义 Student 的 < 运算符,可以实现按照数学成绩从高到低排序,若数学成绩相同则按照学号从小到大排序。最后按照排序结果输出每个同学的学号、姓名和数学成绩。
阅读全文