一个普通不过的C++题解...... 其实结构体cmp排序可以解决,建议用scanf输入会快一些。奉上AC代码一份。。。
#include<algorithm>
#include<string.h>
#include<iostream>
using namespace std;
struct st{
string a;
int b,c,d,e;
};
bool cmp(st a,st b){
if(a.b!=b.b)return a.b<b.b;
if(a.c!=b.c)return a.c<b.c;
if(a.d!=b.d)return a.d<b.d;
return a.e>b.e;
}
int main(){
int n;
scanf("%d",&n);
st a[n];
for(int i=0;i<n;i++){
cin>>a[i].a>>a[i].b>>a[i].c>>a[i].d;
a[i].e=i;
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
cout<<a[i].a<<endl;
return 0;
}
“sort排序是一种将数组或列表中的元素按照一定的顺序排列的方法。 sort排序可以是将数组进行升序或降序排序,默认情况下是升序排序。sort排序比传统的排序算法(如冒泡排序)更快,且使用时需要包含相应的头文件。(algorithm.h)” “sort函数原型为:void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);1
该函数原型定义了三个参数:
first:表示要排序数组的起始地址,迭代器的起始位置,对于数组来说就是数组的首地址。 last:表示数组结束地址的下一位,迭代器的结束位置,即首地址加上数组的长度n(代表尾地址的下一地址)。 comp:用于规定排序的方法,可以是标准库提供的排序规则(如std::greater进行降序排序),也可以是一个自定义的排序函数。”
使用string字符串进行自定义结构体排序
结构体:
用st表示。其中st.a为人名,st.b为出生年份,st.c为出生月份,st.d为出生日期。
排序方式:
用生活中衡量年龄的方法,按年-月-日来进行sort排序。
这样便可以轻松AC
这道题使用了寓情于题的描写手法,体现了作者对生日的喜爱与赞美之情,借题目本身抒发优雅的情感,手法十分高超。(bushi
----------- 阅读题后遗症 -----------