#include <iostream>#include <cstdio>#include <string>#include <algorithm>#include <vector>using namespace std;struct Student { string name; string id; int score;};bool compare(Student s1, Student s2) { return s1.score < s2.score;}int main() { int n; while (scanf("%d", &n) != EOF) { vector<Student> students; for (int i = 0; i < n; i++) { string name, id; int score; cin >> name >> id >> score; students.push_back({name, id, score}); } sort(students.begin(), students.end(), compare); cout << students.back().name << " " << students.back().id << " " << students.back().score << endl; cout << students.front().name << " " << students.front().id << " " << students.front().score << endl; cout << endl; } return 0;}
时间: 2024-01-25 16:02:41 浏览: 100
这段代码是用 C++ 实现的,它能够解决从一堆学生中找最高分和最低分的问题。它使用了 STL 中的 vector 容器和 sort 函数来存储和排序所有学生的信息。以下是代码的详细解释:
```cpp
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
// 定义一个结构体来存储学生的信息
struct Student {
string name; // 学生姓名
string id; // 学生学号
int score; // 学生成绩
};
// 定义一个比较函数,用于在排序时比较学生的成绩
bool compare(Student s1, Student s2) {
return s1.score < s2.score; // 按照成绩从小到大排序
}
int main() {
int n;
while (scanf("%d", &n) != EOF) { // 循环读入每个测试用例
vector<Student> students; // 定义一个 vector 来存储所有学生的信息
for (int i = 0; i < n; i++) { // 循环读入每个学生的信息
string name, id;
int score;
cin >> name >> id >> score;
students.push_back({name, id, score}); // 将学生的信息存储到 vector 中
}
sort(students.begin(), students.end(), compare); // 对所有学生按照成绩从小到大排序
cout << students.back().name << " " << students.back().id << " " << students.back().score << endl; // 输出成绩最高的学生信息
cout << students.front().name << " " << students.front().id << " " << students.front().score << endl; // 输出成绩最低的学生信息
cout << endl; // 输出空行,用于分隔每个测试用例
}
return 0;
}
```
以上程序使用了 `vector` 容器来存储所有学生的信息。在每个测试用例中,它会首先读入一个正整数 n,表示这个测试用例中有 n 个学生的信息需要处理。然后,它会循环读入每个学生的姓名、学号和成绩,将这些信息存储到一个 `Student` 结构体中,并将这个结构体存储到 `vector` 中。接着,它会使用 `sort` 函数将所有学生按照成绩从小到大排序。
最后,它会使用 `back` 函数来访问 `vector` 中最后一个元素,即成绩最高的学生,然后输出这个学生的姓名、学号和成绩。类似地,它会使用 `front` 函数来访问 `vector` 中第一个元素,即成绩最低的学生,然后输出这个学生的姓名、学号和成绩。每个测试用例之间会输出一个空行,用于分隔它们。
阅读全文