1 条题解

  • 0
    @ 2025-10-30 11:14:46

    思路分析

    1. 任务拆解:

    • 读取学生人数n
    • 读取每个学生的三科成绩并计算总分
    • 记录学生学号
    • 按规则进行多条件排序
    • 输出前5名学生的学号和总分

    2. 关键点分析:

    • 排序规则优先级
      1. 总分从高到低
      2. 总分相同时,语文成绩从高到低
      3. 总分和语文都相同时,学号从小到大
    • 需要同时交换学号、语文成绩和总分以保持数据一致性
    • 使用选择排序思想进行多条件比较和交换

    3. 步骤规划: 第一步:读取学生人数n 第二步:循环读取成绩,计算总分,记录学号 第三步:进行多条件排序 第四步:输出前5名学生的学号和总分

    4. 代码对应:

    • cin>>n:读取学生人数
    • 第一个for循环:输入成绩,计算总分s[i],记录学号no[i]
    • 排序双重循环:进行多条件比较和交换
    • if(s[i]<s[j]):比较总分,低的交换到后面
    • else if(s[i]==s[j]):总分相同时比较语文成绩
    • if(a[i]<a[j]):语文成绩低的交换到后面
    • 多个swap:保持学号、语文成绩、总分数据一致性
    • 输出循环:输出前5名学生的学号和总分

    信息

    ID
    1790
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    (无)
    递交数
    323
    已通过
    106
    上传者