#2075. 学生成绩分类和排序(难度电子学会T4)

学生成绩分类和排序(难度电子学会T4)

学生成绩分类和排序

输入一组学生的成绩信息(包括学生的学号和成绩),将成绩大于等于60的学生(及格生)按照成绩从高到低输出,成绩低于60的学生(不及格生)按照输入顺序输出。

输入格式:

  • 第一行输入一个整数 n,表示学生的数量。
  • 接下来的 n 行每行输入一个字符串 id(学生学号)和一个整数 score(学生成绩)。

输出格式:

  • 先按照成绩从高到低输出及格生的学号。
  • 然后按输入顺序输出不及格生的学号

输入样例


5
001 85
002 55
003 90
004 60
005 50

输出样例


003
001
004
002
005

解题思路

  1. 定义数据结构​:
    • 使用结构体 Student 存储每个学生的信息,包括 id(学号)和 score(成绩)。
    • 使用两个数组 passfail 分别存储成绩及格(大于等于60)和不及格(小于60)的学生信息。
  2. 输入数据和分类​:
    • 首先输入学生数量 n
    • 然后,通过循环读取每个学生的学号和成绩,判断其是否及格,将信息分类存储到相应的数组中。
  3. 排序和输出​:
    • 使用 stable_sort 对及格学生数组 pass 按照成绩从高到低排序。
    • 按顺序输出 pass 数组中的学生信息。
    • 按输入顺序输出 fail 数组中的学生信息。 解释:
  • 003001 是成绩最高的学生,按降序排序。
  • 004 恰好 60 分,按输入顺序排序。
  • 002005 不及格,按输入顺序输出