C++实现学生成绩排名:分数排序与排名输出

本代码使用C++语言实现了学生成绩排名功能,按照分数从高到低排序,分数相同则编号小的更靠前,并输出每个学生的排名。代码简洁易懂,并附有详细注释。

#include <iostream>
#include <vector>
#include <algorithm>

struct Student {
    int id;
    int score;
};

bool compare(const Student& s1, const Student& s2) {
    if (s1.score == s2.score) {
        return s1.id < s2.id;
    }
    return s1.score > s2.score;
}

int main() {
    int n;
    std::cin >> n;
    
    std::vector<Student> students(n);
    for (int i = 0; i < n; ++i) {
        std::cin >> students[i].score;
        students[i].id = i + 1;
    }
    
    std::sort(students.begin(), students.end(), compare);
    
    std::vector<int> ranks(n);
    for (int i = 0; i < n; ++i) {
        ranks[students[i].id - 1] = i + 1;
    }
    
    for (const auto& rank : ranks) {
        std::cout << rank << std::endl;
    }
    
    return 0;
}

代码说明:

  1. 结构体 Student: 定义了一个名为 Student 的结构体,包含两个成员变量:id 表示学生编号,score 表示学生分数。
  2. 比较函数 compare: 定义了一个名为 compare 的比较函数,用于比较两个学生对象的成绩和编号,用于排序。分数高的排前面,分数相同的编号小的排前面。
  3. 输入学生信息: 程序首先从标准输入获取学生人数 n,然后使用循环输入每个学生的成绩,并根据循环次数自动生成学生编号。
  4. 排序: 使用 std::sort 函数对学生列表进行排序,使用 compare 函数作为比较函数。
  5. 计算排名: 遍历排序后的学生列表,根据学生编号计算每个学生的排名,并存储到 ranks 向量中。
  6. 输出排名: 遍历 ranks 向量,输出每个学生的排名。

使用方法:

在控制台中输入同学人数和每个同学的分数,程序会输出每个同学的排名。

例如,输入以下数据:

3
80
90
80

程序会输出以下结果:

2
1
2

总结:

这段代码简洁易懂,展示了如何使用 C++ 实现学生成绩排名功能。通过使用排序算法和结构体,代码实现了对学生信息进行有效的管理和排名输出。你可以根据需要对代码进行扩展和修改,例如添加学生姓名等信息。

C++实现学生成绩排名:分数排序与排名输出

原文地址: https://www.cveoy.top/t/topic/o6oy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录