FZ信息学比赛成绩排序及低年级人数统计的C++实现
以下是解决该问题的 C++ 代码: ```cpp #include <iostream> #include <algorithm> #include <vector> using namespace std; // 定义学生结构体,包含成绩、年级和原始编号 struct Student { int score; // 学生成绩 int grade; // 学生年级 int id; // 学生原始编号 }; // 自定义比较函数,用于排序 bool compare(const Student& a, const Student& b) { if (a.score != b.score) { return a.score > b.score; // 成绩从高到低排序 } return a.grade < b.grade; // 成绩相同,年级从低到高排序 } int main() { int N; cin >> N; // 输入学生人数 vector<Student> students(N); // 输入每个学生的成绩和年级 for (int i = 0; i < N; i++) { cin >> students[i].score >> students[i].grade; students[i].id = i; } // 对学生进行排序 sort(students.begin(), students.end(), compare); // 输出每个排名的学生前面有多少个学生年级低于他 for (int i = 0; i < N; i++) { int count = 0; // 统计前面年级比当前学生低的学生数量 for (int j = 0; j < i; j++) { if (students[j].grade < students[i].grade) { count++; } } cout << count << endl; } return 0; } ``` ### 代码说明: 1. **结构体 `Student`**:用于存储每个学生的成绩、年级和原始编号。 2. **比较函数 `compare`**:用于对学生进行排序,先按照成绩从高到低排序,成绩相同则按照年级从低到高排序。 3. **输入部分**:读取学生人数 `N`,并依次读取每个学生的成绩和年级。 4. **排序部分**:使用 `sort` 函数对学生进行排序。 5. **统计和输出部分**:遍历排序后的学生列表,对于每个学生,统计前面年级比他低的学生数量,并输出结果。 ######[AI问答 | 552点数解答 | 2026-02-25 16:56:01]
- C 语言:快速实现 5 个学生信息录入、按成绩升序排序并输出!(字节豆包 | 373点数解答 | 2024-10-30 00:37:20)402
- C语言实现:输入5名学生信息并按成绩升序排序输出(字节豆包 | 354点数解答 | 2024-10-30 18:45:58)345
- C语言:输入5个学生信息,按成绩升序排序并输出(字节豆包 | 373点数解答 | 2024-10-31 19:49:58)339
- C语言:输入5名学生信息并按成绩升序排序输出(字节豆包 | 326点数解答 | 2025-01-01 20:11:47)329
- 代码纠错:实现“7 - 4 有理数加法”的正确计算与输出(字节豆包 | 581点数解答 | 2025-12-11 11:57:09)55
- 成绩等级统计:20个60 - 100分成绩的等级数量揭秘(字节豆包 | 219点数解答 | 2025-04-09 10:20:32)211
- 培训机构学员成绩与年龄更新:C++ 代码实现(DeepSeek | 186点数解答 | 2025-12-16 18:04:31)48
- Python 处理培训机构学员培训后年龄与 NOIP 成绩提升情况(DeepSeek | 73点数解答 | 2025-12-16 18:05:20)52
- 培训机构学员成绩提升:C++代码实现年龄与NOIP成绩更新(DeepSeek | 178点数解答 | 2025-12-31 12:20:24)50
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)328
- C 语言编程:解决编程赛小组淘汰问题及代码优化建议(字节豆包 | 421点数解答 | 2024-12-28 16:57:18)193
- C语言解决编程赛小组淘汰问题:代码及三大改进建议(字节豆包 | 435点数解答 | 2024-12-28 16:57:20)296