酷代码 AI
菜单
服务商

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]

相关提问
发财导航,免费问AI
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]