#include<stdio.h>
typedef struct {
char name[6];
int year;
int month;
int day;
}person;
int main(){
int num,i,c=0;
person youngest={"a",2014,9,6},oldest={"b",1814,9,6},old={"a",2014,9,6},young={"b",1814,9,6},P;
scanf("%d",&num);
for(i=0;i<num;i++){
scanf("%s%d/%d/%d",P.name,&P.year,&P.month,&P.day);
if(older(P,youngest)&&older(oldest,P)){
if(older(young,P)){
young=P;
}
if(older(P,old)){
old=P;
}
c++;
}
}
if(c>0)
printf("%d %s %s",c,old.name,young.name);
else printf("0");
return 0;
}
int older(person a,person b){
if(((a.year)*1000+(a.month)*100+(a.day))>((b.year)*1000+(b.month)*100+(b.day))){
return 0;
}else{
return 1;
}
}
总结:
1、初始值定义有技巧。
2、比较函数单独拿出来更加简洁,函数能比谁老也能比谁年轻。
3、有一个坑:当输入的年龄都不符合时要输出0。