本文主要是介绍PAT-1028,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。
输入描述:
输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。
输出描述:
在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。
输入例子:
5John 2001/05/12Tom 1814/09/06Ann 2121/01/30James 1814/09/05Steve 1967/11/20
输出例子:
3 Tom John
#include <stdio.h>typedef struct Person1{char name[10];int year;int month;int date;
}person;int compare_info(person p1,person p2)
{if(p1.year < p2.year) return 1;else if(p1.year == p2.year && p1.month < p2.month) return 1;else if(p1.year == p2.year && p1.month == p2.month && p1.date < p2.date) return 1;else return 0;
}int main(void)
{person max,min,per;int length;int i;int count;min.year = 0;min.month = 0;min.date = 0;max.year = 0;max.month = 0;max.date = 0;count = 0;scanf("%d",&length);
// printf("%d\n",length);for(i = 0;i < length;i++){scanf("%s %d/%d/%d",per.name,&per.year,&per.month,&per.date);//printf("%d %s %d/%d/%d\n",i,per.name,per.year,per.month,per.date);if(per.year > 1814 && per.year < 2014){// printf("----------------->\n");if(count == 0){min = per;max = per;}else{if(compare_info(per,min))min = per;if(compare_info(max,per))max = per;}count++;}if(per.year == 1814){if(per.month > 9) {if(count == 0){min = per;max = per;}else{if(compare_info(per,min))min = per;if(compare_info(max,per))max = per;}count++;}if(per.month == 9 && per.date > 5){if(count == 0){min = per;max = per;}else{if(compare_info(per,min))min = per;if(compare_info(max,per))max = per;}count++;}}if(per.year == 2014){if(per.month < 9) {if(count == 0){min = per;max = per;}else{if(compare_info(per,min))min = per;if(compare_info(max,per))max = per;}count++;}if(per.month == 9) {if(per.date < 7){if(count == 0){min = per;max = per;}else{if(compare_info(per,min))min = per;if(compare_info(max,per))max = per;}count++;}}}}if(count > 0)printf("%d %s %s",count,min.name,max.name);elseprintf("%d",count);return 0;
}
这篇关于PAT-1028的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!