題目
鏈接:PAT (Basic Level) Practice 1028 人口普查
某城鎮(zhèn)進(jìn)行人口普查,得到了全體居民的生日∧に危現(xiàn)請你寫個程序窿侈,找出鎮(zhèn)上最年長和最年輕的人。
這里確保每個輸入的日期都是合法的秋茫,但不一定是合理的——假設(shè)已知鎮(zhèn)上沒有超過 200 歲的老人史简,而今天是 2014 年 9 月 6 日,所以超過 200 歲的生日和未出生的生日都是不合理的肛著,應(yīng)該被過濾掉圆兵。輸入格式:
輸入在第一行給出正整數(shù) N,取值在枢贿;隨后 N 行殉农,每行給出 1 個人的姓名(由不超過 5 個英文字母組成的字符串)、以及按
yyyy/mm/dd
(即年/月/日)格式給出的生日局荚。題目保證最年長和最年輕的人沒有并列超凳。輸出格式:
在一行中順序輸出有效生日的個數(shù)、最年長人和最年輕人的姓名危队,其間以空格分隔聪建。
輸入樣例:
5 John 2001/05/12 Tom 1814/09/06 Ann 2121/01/30 James 1814/09/05 Steve 1967/11/20
輸出樣例:
3 Tom John
思路
- 篩選有效的生日;
- 統(tǒng)計有效生日的個數(shù)茫陆。
- 要用到strcpy金麸、strcmp等字符串函數(shù)
代碼
#include<stdio.h>
#include<string.h>
int main()
{
int N;
scanf("%d", &N);
int cnt = 0;
int i;
char max[11],min[11];
char young[6], old[6];
strcpy(max, "1814/09/06");
strcpy(min, "2014/09/06");
for(i = 0; i < N; i++){
char name[6], day[11];
scanf("%s %s", name, day);
if(strcmp(day,"1814/09/06") >= 0 && strcmp("2014/09/06" ,day) >= 0){ //篩選有效的生日
if(strcmp(max,day) < 0){
strcpy(max,day);
strcpy(young, name);
}
if(strcmp(min, day) > 0){
strcpy(min, day);
strcpy(old, name);
}
cnt++; // 統(tǒng)計有效生日的個數(shù)
}
}
if(cnt){
printf("%d %s %s\n", cnt, old, young);
}
else{
printf("0\n");
}
return 0;
}
---END---
其它相關(guān)題目
PAT-B 1026 程序運行時間(C語言)
PAT-B 1027 打印沙漏(C語言)
PAT-B 1029 舊鍵盤(C語言)
PAT-B 1030 完美數(shù)列(C語言)