给定N个学生的基本信息,包括学号(由12个数字组成的字符串)、姓名(长度小于20的不包含空白字符的非空字符串)、高等数学成绩、C语言程序设计成绩,成绩均为[0,100]区间内的整数,要求根据C语言的成绩,对学生名单进行降序排列。 输入格式: 输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 高等数学成绩 C语言程序设计成绩”,中间以空格分隔。 输出格式: 按照C语言课程程序降序,输出所有学生信息,一行是一个学生的信息,信息之间用空格隔开。
时间: 2024-02-29 16:53:49 浏览: 161
这道题可以先将所有学生信息存储到一个结构体数组中,然后使用 sort 函数按照 C 语言成绩降序排序,最后输出排序后的学生信息即可。
以下是示例代码:
```cpp
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
// 定义学生结构体
struct Student {
string num; // 学号
string name; // 姓名
int mathScore; // 高等数学成绩
int cScore; // C语言程序设计成绩
};
// 比较函数,按照C语言成绩降序排列
bool cmp(Student a, Student b) {
return a.cScore > b.cScore;
}
int main() {
int n;
cin >> n;
// 读入学生信息
Student stu[n];
for (int i = 0; i < n; i++) {
cin >> stu[i].num >> stu[i].name >> stu[i].mathScore >> stu[i].cScore;
}
// 按照C语言成绩降序排列
sort(stu, stu + n, cmp);
// 输出排序后的学生信息
for (int i = 0; i < n; i++) {
cout << stu[i].num << " " << stu[i].name << " " << stu[i].mathScore << " " << stu[i].cScore << endl;
}
return 0;
}
```
需要注意的是,排序函数 `sort` 的第二个参数是一个比较函数,用于定义排序的方式。在本题中,我们需要按照 C 语言成绩降序排列,所以定义了一个比较函数 `cmp`。
阅读全文