某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。
这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉。
输入在第一行给出正整数 N,取值在(;随后 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 5 int main(){ 6 char name[6]; 7 char maxname[6]; 8 char mixname[6]; 9 long age ; 10 char birthday[15]; 11 long birthdayNum; 12 long maxage=906; 13 long mixage=2000906; 14 int youxiao=0; 15 int n; 16 cin>>n; 17 for(int i=0;i<n;i++){ 18 birthdayNum=0; 19 cin>>name; 20 cin>>birthday; 21 for(int j=0;j<strlen(birthday);j++){ 22 if(birthday[j]!=‘/‘) 23 birthdayNum = birthdayNum*10+(birthday[j]-‘0‘); 24 } 25 age=20140906-birthdayNum; 26 if(age<=2000000 && age>=0){ 27 if(age>maxage){ 28 maxage=age; 29 strcpy(maxname,name); 30 } 31 if(age<mixage){ 32 mixage=age; 33 strcpy(mixname,name); 34 } 35 youxiao++; 36 } 37 } 38 if(youxiao==0){ 39 cout<<"0\n"; 40 }else 41 cout<<youxiao<<" "<<maxname<<" "<<mixname<<"\n"; 42 return 0; 43 }
原文:https://www.cnblogs.com/geyang/p/12310873.html