題目鏈結->link
參考演算法筆記的原始碼。
首先要判斷是否出生日期是否合法,其次要比較出年齡最大和年齡最小的人,故可以先初始化左右邊界值以及年齡最大、最小人的初始值,每一次輸入首先判斷是否合法,再比較並更新年齡最大、最小的人,並計數。因為有左右邊界並且可能同時更新最大和最小值,所以需要有大於等於和小於等於兩個比較函式。
特殊情況是當所有輸入都不合法時,輸出0。
#include
#include
#include
#include
using
namespace std;
struct personoldest,youngest,temp,left,right;
void
init()
bool
moreequ
(person a,person b)
bool
lessequ
(person a,person b)
intmain()
}if(count==0)
printf
("0\n");
else
printf
("%d %s %s\n"
,count,oldest.name,youngest.name)
;return0;
}
PAT B1028 人口普查
1028 人口普查 20 分 某城鎮進行人口普查,得到了全體居民的生日。現請你寫個程式,找出鎮上最年長和最年輕的人。這裡確保每個輸入的日期都是合法的,但不一定是合理的 假設已知鎮上沒有超過 200 歲的老人,而今天是 2014 年 9 月 6 日,所以超過 200 歲的生日和未出生的生日都是不合理的...
PAT B1028 人口普查
某城鎮進行人口普查,得到了全體居民的生日。現請你寫個程式,找出鎮上最年長和最年輕的人。這裡確保每個輸入的日期都是合法的,但不一定是合理的 假設已知鎮上沒有超過 200 歲的老人,而今天是 2014 年 9 月 6 日,所以超過 200 歲的生日和未出生的生日都是不合理的,應該被過濾掉。輸入在第一行給...
PAT B1028 人口普查
某城鎮進行人口普查,得到了全體居民的生日。現請你寫個程式,找出鎮上最年長和最年輕的人。這裡確保每個輸入的日期都是合法的,但不一定是合理的 假設已知鎮上沒有超過 200 歲的老人,而今天是 2014 年 9 月 6 日,所以超過 200 歲的生日和未出生的生日都是不合理的,應該被過濾掉。輸入在第一行給...