【九度 02】N个学生数据成绩排序

简介: 【九度 02】N个学生数据成绩排序

一、题意

二、解答过程

首先认识一下 C++中的 Sort函数,有三个参数代表:

(1)第一个是要排序的数组的起始地址

(2)第二个是结束的地址(最后一位要排序的地址)

(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。

sort(buf,buf+n,cmp);//快速排序

cmp函数是自己写的比较函数。

strcmp函数是官方提供的比较函数,用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数

#include <iostream>
#include<stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
//首先定义学生个体的结构体:
struct E{
    char name[101];
    int age;
    int score;
}buf[1000];
//比较函数
bool cmp(E a,E b)//实现比较规则
{
    if(a.score!=b.score)
    {
        return a.score<b.score;//分数不同则低者在前
    }
    int tmp=strcmp(a.name,b.name);
    if(tmp!=0)
    {
        return tmp<0;
    }else{
        return a.age<b.age;
    }
}
int main() {
    int n;
    while(scanf("%d",&n)!=EOF)//对学生结构体分别进行赋值
    {
        for(int i=0;i<n;i++)
        {
            scanf("%s%d%d",buf[i].name,&buf[i].age,&buf[i].score);
        }
        sort(buf,buf+n,cmp);//快速排序
        for (int i = 0; i <n ; ++i)
        {
            printf("%s %d %d\n",buf[i].name,buf[i].age,buf[i].score);
        }
    }
    return 0;
}


目录
相关文章
|
5月前
7-1 学生成绩排序
7-1 学生成绩排序
62 0
|
6月前
1038 统计同成绩学生 (20 分)
1038 统计同成绩学生 (20 分)
|
C++
成绩统计
小蓝给学生们组织了一场考试,卷面总分为100分,每个学生的得分都是一个0到100的整数。如果得分至少是60分,则称为及格。
89 0
|
7月前
计蒜客_成绩排序
计蒜客_成绩排序
成绩排序 给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
成绩排序 给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
652 0