n名同学参加了英语考试。已知这n名学生的学号、姓名和成绩(0≤成绩≤100) ,请找出哪个学生是倒数第一名。当有多个学生是倒数第一名时,输出最先出现的那位。 输入描述
时间: 2024-12-29 20:28:16 浏览: 5
要解决这个问题,我们可以使用C++来编写一个简单的程序。首先,我们需要定义一个结构体或类来存储学生的信息,包括学号、姓名和成绩。然后创建一个容器(如vector或list)来存储所有学生,根据成绩降序排序。这样,倒数第一名的学生就是成绩最低的那个。如果有多名学生分数相同,我们按照学号排序,选择第一个出现的学生。
以下是一个可能的解决方案:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含sort和greater<>用于自定义排序
// 定义一个结构体或类来表示学生
struct Student {
int id;
std::string name;
int score;
};
// 自定义比较函数,按分数降序和学号升序排列
bool compare(const Student& a, const Student& b) {
if (a.score == b.score) {
return a.id < b.id; // 如果分数相同,按学号从小到大排序
}
return a.score > b.score; // 否则,按分数从高到低排序
}
int main() {
int n;
std::cout << "请输入学生人数: ";
std::cin >> n;
std::vector<Student> students(n);
for (int i = 0; i < n; ++i) {
std::cout << "请输入第" << i+1 << "个学生的学号、姓名和成绩: ";
std::cin >> students[i].id >> students[i].name >> students[i].score;
}
// 对学生进行排序
std::sort(students.begin(), students.end(), compare);
// 倒数第一名的学生
std::cout << "倒数第一名的学生是: 学号 - " << students[0].id
<< ", 姓名 - " << students[0].name
<< ", 成绩 - " << students[0].score << std::endl;
return 0;
}
```
阅读全文