一、题意
二、解答过程
首先认识一下 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; }