用c++写输入一系列学生姓名及其语文成绩(不重复),请按语文成绩由高到低的顺序,打印姓名。 输入 第一行输入一个整数m(0<m<20),第二行输入m个字符串(空格分开),代表姓名,第三行输入m个0~100之间的不重复的整数,代表成绩。 输出 输出m个姓名(按成绩排序之后的),由空格隔开。
时间: 2024-04-19 13:25:26 浏览: 108
下面是用C++编写的解决方案:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
struct Student {
std::string name;
int score;
};
bool compare(Student s1, Student s2) {
return s1.score > s2.score;
}
int main() {
int m;
std::cin >> m;
std::vector<Student> students;
for (int i = 0; i < m; i++) {
std::string name;
int score;
std::cin >> name >> score;
students.push_back({name, score});
}
std::sort(students.begin(), students.end(), compare);
for (const auto& student : students) {
std::cout << student.name << " ";
}
return 0;
}
```
这个程序首先读取一个整数m,表示学生人数。然后依次读取m个学生的姓名和成绩,并将其存储在一个名为`students`的向量中。接着,使用`std::sort`函数按照成绩从高到低对学生进行排序。最后,遍历排序后的学生向量,并打印出每个学生的姓名。
注意,这个程序假设输入的学生姓名和成绩没有重复。如果有重复的情况,可能会导致排序结果不准确。
阅读全文