标签:
某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。
这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。
输入格式:
输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。
输出格式:
在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。
输入样例:5 John 2001/05/12 Tom 1814/09/06 Ann 2121/01/30 James 1814/09/05 Steve 1967/11/20输出样例:
3 Tom John
提醒:注意一下边界问题
1 #include <iostream> 2 #include <string.h> 3 using namespace std; 4 int compare(char a[20],char b[20]) 5 { 6 for(int i=0; i<10; i++) 7 { 8 if(a[i]-b[i]>0) 9 return 1; 10 if(a[i]-b[i]<0) 11 return 0; 12 } 13 return 0; 14 } 15 int main() 16 { 17 int n,count=0; 18 char name[10],a[20],old[10],young[10],biggest[20]="1814/09/05",smallest[20]="2014/09/07"; 19 scanf("%d", &n); 20 //cin>>n; 21 for(int i=0; i<n; i++) 22 { 23 scanf("%s %s",name,a); 24 //cin>>name>>a; 25 if((compare(a,"1814/09/05"))&&(compare("2014/09/07",a))) 26 { 27 count++; 28 if(compare(a,biggest)) 29 { 30 strcpy(biggest,a); 31 strcpy(young,name); 32 } 33 if(compare(smallest,a)) 34 { 35 strcpy(smallest,a); 36 strcpy(old,name); 37 } 38 } 39 } 40 if(count>0) 41 printf("%d %s %s\n",count,old,young); 42 else 43 printf("0\n"); 44 return 0; 45 }
标签:
原文地址:http://www.cnblogs.com/zhien-aa/p/5660536.html