【九度 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;
}


目录
相关文章
|
8天前
有5个学生,每个学生有3门课程的成绩,从键盘输入学生数据【姓名,学号,3门课成绩】,计算平均成绩,将原有 数据和计算的平均分数存放磁盘文件stud.dat中
有5个学生,每个学生有3门课程的成绩,从键盘输入学生数据【姓名,学号,3门课成绩】,计算平均成绩,将原有 数据和计算的平均分数存放磁盘文件stud.dat中
41 0
|
3月前
7-1 学生成绩排序
7-1 学生成绩排序
29 0
|
4月前
1038 统计同成绩学生 (20 分)
1038 统计同成绩学生 (20 分)
|
C++
成绩统计
小蓝给学生们组织了一场考试,卷面总分为100分,每个学生的得分都是一个0到100的整数。如果得分至少是60分,则称为及格。
82 0
|
5月前
计蒜客_成绩排序
计蒜客_成绩排序