21xrx.com
2024-11-22 10:07:46 Friday
登录
文章检索 我的文章 写文章
C++成绩排序:按照字典顺序排列相同成绩的名字
2023-07-04 21:16:27 深夜i     --     --
C++ 成绩排序 字典顺序 名字

在学习编程语言时,C++是许多人选择的首选语言之一。学习C++的过程中,我们常常需要进行排序操作,这也是程序设计中常见的一种操作。本文将介绍如何在C++中按照字典顺序排列相同成绩的名字。

首先,我们需要一个学生成绩的数据结构。在本文中,我们使用结构体来表示每个学生的成绩信息,包括姓名和分数。结构体定义如下所示:


struct student

  string name;  // 学生姓名

  int score;   // 学生分数

;

接下来,我们需要定义一个排序函数,这个函数可以用来排序学生成绩。在排序函数中,我们可以使用标准库中的sort()函数进行排序,同时用自定义的比较函数来判定数组中两个元素的大小关系。

关于比较函数,我们需要注意的是,我们需要先比较学生分数的大小,如果分数相同,再比较学生姓名的字典序关系。具体实现如下所示:


bool cmp(student a, student b) {

  if (a.score == b.score)

    return a.name < b.name;

  

  return a.score > b.score;

}

在cmp函数中,当两个学生分数相同时,我们通过比较学生姓名的字典序关系来判断哪一个学生排在前面。这里使用的是字符串的比较操作符<。

最后,在主函数中,我们可以通过读入一系列学生的成绩信息,存储到一个数组中。然后,对这个数组进行排序操作,使用我们定义的比较函数进行排序。排序完成后,我们可以将排好序的学生成绩信息输出到屏幕上,即可得到按照字典顺序排列相同成绩的名字的结果。

完整代码如下所示:


#include <iostream>

#include <cstdio>

#include <string>

#include <algorithm>

using namespace std;

struct student

  string name;

  int score;

;

bool cmp(student a, student b) {

  if (a.score == b.score)

    return a.name < b.name;

  

  return a.score > b.score;

}

int main() {

  int n;

  cin >> n;

  student stu[n];

  for (int i = 0; i < n; i++) {

    cin >> stu[i].name >> stu[i].score;

  }

  sort(stu, stu + n, cmp);

  for (int i = 0; i < n; i++) {

    cout << stu[i].name << " " << stu[i].score << endl;

  }

  return 0;

}

通过本文的介绍,相信大家已经掌握了如何在C++中按照字典顺序排列相同成绩的名字。谢谢阅读!

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复