假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉。
注意:所以有可能存在输入都是无效的情况,需要输出0。
比较日期是否有效可以另一年的天数固定,每月的日数也固定,来计算生日是否合法。也可以用输入日期于字符串1814/09/06喝2014/09/06来比较是否合法。
最后从合法的中挑选最年轻的和最年长的。
#include<stdio.h>
#include<string.h>
int main()
{
long int a=749090,n,b,c,d,e[100000],m,s=0;
char f[100000][6],g[6];
scanf("%ld",&n);
for(m=0;m<n;m++){
scanf("%s %ld/%ld/%ld",&g,&b,&c,&d);
b=(b-1)*372+(c-1)*31+d;
if(b<=a&&b>=a-200*372){
strcpy(f[s],g);
e[s]=b;
s++;
}
}
if(s!=0){
b=0;c=0;
for(m=0;m<s;m++){
if(e[m]<e[b])
b=m;
if(e[m]>e[c])
c=m;
}
printf("%ld %s %s",s,f[b],f[c]);}
else
printf("0");
return 0;
}