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

某班有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 蓝桥oj3931,请问我错在哪里
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染