qq_35922498 2023-03-12 04:15 采纳率: 83.3%
浏览 87
已结题

某班有n位学生,每位学生要进行按成绩(分数)从高分到低分的顺序排名,如果成绩(分数)相同则按姓名进行排序(字典顺序)。

某班有n位学生,每位学生在要进行按成绩(分数)从高分到低分的顺序排名,如果成绩(分数)相同则按姓名进行排序(字典顺序)。要求如下图所示,已有代码,最后输出怎么写?

img


#include<bits/stdc++.h>
using namespace std;

 struct student
 {
     string s;
     int x;
 };
 bool cmp(student a,student b)
 {
     if(a.x!=b.x) return a.x>b.x;
     return a.s<b.s;
 }
 int main(){
 vector<student> a;
 int n,score;
 string name;
 cin>>n;
 for(int i=0;i<n;i++)
 {
     cin>>name>>score;
     a.push_back({name,score});
 }
 sort(a.begin(),a.end(),cmp);
.....

}

  • 写回答

4条回答 默认 最新

  • MarkHan_ 2023-03-12 09:07
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    你可以在sort之后使用一个循环来输出排名。在循环中,您可以使用一个计数器来计算排名,从1开始递增,并输出每个学生的姓名、分数和排名。

    下面是示例代码:

    #include<bits/stdc++.h>
    using namespace std;
    
    struct student
    {
    string s;
    int x;
    };
    
    bool cmp(student a, student b)
    {
    if (a.x != b.x) return a.x > b.x;
    return a.s < b.s;
    }
    
    int main()
    {
    vector<student> a;
    int n, score;
    string name;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
    cin >> name >> score;
    a.push_back({ name,score });
    }
    sort(a.begin(), a.end(), cmp);
    
    int rank = 1;
    for (int i = 0; i < n; i++)
    {
        cout << rank << " " << a[i].s << " " << a[i].x << endl;
        if (i < n - 1 && a[i + 1].x < a[i].x)
        {
            rank++;
        }
    }
    
    return 0;
    }
    
    

    在这个代码中,我们首先读入学生的信息,存储在一个vector中。然后我们使用sort来对学生进行排序,按照题目要求排序。
    ·
    接下来,我们使用一个rank变量来记录当前排名。在循环中,我们输出当前学生的排名、姓名和分数,并且如果下一个学生的分数小于当前学生的分数,则增加排名。这样,我们就可以输出所有学生的排名了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月20日
  • 已采纳回答 3月12日
  • 创建了问题 3月12日

悬赏问题

  • ¥15 怎样才能让鼠标沿着线条的中心线轨迹移动
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?