查詢 1028 人口普查

2021-08-18 12:15:30 字數 918 閱讀 3297

思路:結構體存放人的姓名、出生日期。

最年長的人: 根據輸入不斷更新 結構體變數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...