题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805293282607104
AC代码(将年月日转换成长整型):
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int main(){
int n;
int year,month,day;
int cnt=0;
long long maxAge=20140907,minAge=18140905;
string name,maxname,minname;
scanf("%d",&n);
for(int i=0;i<n;i++){
cin>>name;
scanf("%d/%d/%d",&year,&month,&day);
long long birth=10000*year+100*month+day;
if(birth<18140906||birth>20140906);
else{
cnt++;
if(birth<maxAge){
maxname=name;
maxAge=birth;
}
if(birth>minAge){
minname=name;
minAge=birth;
}
}
}
if(cnt){
cout<<cnt<<" "<<maxname<<" "<<minname;
}
else{
printf("0\n");
}
return 0;
}
2,利用结构体:
#include <iostream>
#include <cstdio>
int main()
{
int n,cnt=0;
scanf("%d",&n);
struct birth{
char name[6];
int y;
int m;
int d;
}a,max,min;
max.y=2014;max.m=9;max.d=7;
min.y=1814;max.m=9;max.d=5;
for(int i = 0;i<n;i++){
scanf("%s %d/%d/%d",&a.name,&a.y,&a.m,&a.d);
cnt++;
if(a.y>2014||(a.y==2014&&a.m>9)||(a.y==2014&&a.m==9&&a.d>6)||a.y<1814||(a.y==1814&&a.m<9)||(a.y==1814&&a.m==9&&a.d<6)){
cnt--;
continue;
}
if(a.y<max.y||(a.y==max.y&&a.m<max.m)||(a.y==max.y&&a.m==max.m&&a.d<max.d)){
max=a;
}
if(a.y>min.y||(a.y==min.y&&a.m>min.m)||(a.y==min.y&&a.m==min.m&&a.d>min.d)){
min=a;
}
}
printf("%d",cnt);
if(cnt!=0){
printf(" %s %s",max.name,min.name);
}
return 0;
}