坑点说明:
输入的有效生日数可能为0导致输出格式错误
考察知识点归纳:
统计一组数据的最值
#include<stdio.h>
#include<string.h>
int main(void){
int i,n,m;//设置max,min储存生日字符串的最值(通过strcmp()函数可以比较由数字组成的字符串其整数的大小,注意如果有非数字字符串必须再相同位置上,且字符串长度必须相同)
char a[6],b[11],max[6],min[6],Min[11]={"9999/99/99"},Max[11]={"0000/00/00"};//也可以用整数将年月日加权和进行比较(字符串更简便一点)
scanf("%d",&n);//ps:如果用字符串来比较生日的话,非数字字符必须在数组相同位置上,且字符串长度必须相同(具体自查strcmp()函数的比较机制)
for(i=0,m=0;i<n;i++){
scanf(" %s %s",a,b);
if(strcmp(b,"1814/09/06")>=0&&strcmp(b,"2014/09/06")<=0){//比较生日是否合法
if(strcmp(b,Max)>0){//求最大生日值
strcpy(max,a);
strcpy(Max,b);
}
if(strcmp(Min,b)>0){//求最小生日值
strcpy(min,a);
strcpy(Min,b);
}
m++;//统计有效生日的个数
}
}
if(m!=0)//判断输入有效生日数为0是否为0输出
printf("%d %s %s",m,min,max);
else
printf("0");
}