思路:結構體存放人的姓名、出生日期。
最年長的人: 根據輸入不斷更新 結構體變數oldest存放 初始化為(最小的) 2014/09/06
最年輕的人 :同上 過濾超過200歲的,初始化是1814/09/06
合法日期左邊界: 不變數 left存放 1814/09/06
合法日期右邊界: 同上 right 2014/09/06
程式基本思路: 讀入日期時 判斷是否在邊界範圍,在的話更新最年長和最年輕,可以寫比較函式 lessequ(person a,person b) a的日期小於b的日期的話,返回true。
注意:1.所有人的日期都不在合法區間 這時候要特判輸出0。
2.有可能同時更新最大日期和最小日期 所以不能用ifelse選乙個輸出
3. 日期比較函式只寫乙個會導致邊界問題。
#includestruct persontemp,oldest,youngest,left,right;
//參考結構體陣列的排序 239頁 下圖寫法為yy相等情況下,按照mm的大小進行的二級排序
bool lessequ(person a,person b)
bool moreequ(person a,person b)
//其實不是很懂為什麼要專門寫個方法初始化 這樣看起來簡潔嗎
void init()
int main() }
if(num==0) printf("0\n");//所有人的日期都不合法,只輸出0
else printf("%d %s %s\n",num,oldest.name,youngest.name);
return 0;
}
1028 人口普查
某城鎮進行人口普查,得到了全體居民的生日。現請你寫個程式,找出鎮上最年長和最年輕的人。這裡確保每個輸入的日期都是合法的,但不一定是合理的 假設已知鎮上沒有超過200歲的老人,而今天是2014年9月6日,所以超過200歲的生日和未出生的生日都是不合理的,應該被過濾掉。輸入格式 輸入在第一行給出正整數n...
1028 人口普查
某城鎮進行人口普查,得到了全體居民的生日。現請你寫個程式,找出鎮上最年長和最年輕的人。這裡確保每個輸入的日期都是合法的,但不一定是合理的 假設已知鎮上沒有超過200歲的老人,而今天是2014年9月6日,所以超過200歲的生日和未出生的生日都是不合理的,應該被過濾掉。輸入格式 輸入在第一行給出正整數n...
1028 人口普查
某城鎮進行人口普查,得到了全體居民的生日。現請你寫個程式,找出鎮上最年長和最年輕的人。這裡確保每個輸入的日期都是合法的,但不一定是合理的 假設已知鎮上沒有超過200歲的老人,而今天是2014年9月6日,所以超過200歲的生日和未出生的生日都是不合理的,應該被過濾掉。輸入格式 輸入在第一行給出正整數n...