1028. 人口普查(20)

时间限制
200 ms

内存限制
65536 kB

代码长度限制
8000 B

判题程序
Standard

作者
CHEN, Yue

某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。

这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。

输入格式:

输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。

输出格式:

在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。

输入样例:

5
John 2001/05/12
Tom 1814/09/06
Ann 2121/01/30
James 1814/09/05
Steve 1967/11/20

输出样例:

  
3 Tom John
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct person
{char name[10];char data[20];int yy;int mm;int dd;
};
int  logical(yy,mm,dd)
{//还没有出生if(yy>2014)return 0;if(yy==2014){if(mm<9)return 1;if(mm==9){if(dd<=6)return 1;return 0;}else return 0;}//超过200岁if(yy<1814)//不能超过两百岁return 0;if(yy==1814){if(mm<9)return 0;if(mm==9){if(dd>=6)return 1;else return 0;}else return 1;//比9月大的,没有200岁}else return 1;
}
int main()
{int n,i,max,min,max_i,min_i,count=0;max=0;min=100000000;scanf("%d",&n);struct person *a;a=(struct person *)malloc(n*sizeof(struct person));for(i=0;i<n;i++){scanf("%s%s",&a[i].name,&a[i].data);}for(i=0;i<n;i++){a[i].yy=a[i].mm=a[i].dd=0;int j=0;//分解data成为yy,mm,ddfor(j=0;j<4;j++){a[i].yy=a[i].yy*10+(a[i].data[j]-'0');}for(j=5;j<7;j++){a[i].mm=a[i].mm*10+(a[i].data[j]-'0');}for(j=8;j<10;j++){a[i].dd=a[i].dd*10+(a[i].data[j]-'0');}//printf("%d %d %d",a[i].yy,a[i].mm,a[i].dd);}for(i=0;i<n;i++){   //判断是否合理if(logical(a[i].yy,a[i].mm,a[i].dd)==1){if(a[i].yy*1000+a[i].mm*100+a[i].dd>max){max=a[i].yy*1000+a[i].mm*100+a[i].dd;max_i=i;}if(a[i].yy*1000+a[i].mm*100+a[i].dd<min){min=a[i].yy*1000+a[i].mm*100+a[i].dd;min_i=i;}count++;}}if(count==0){printf("0");return 0;}printf("%d ",count);printf("%s ",a[min_i].name);printf("%s",a[max_i].name);
}
这道题1)第四个测试点,是没有合理的日期输入,所以要考虑为0的情况
2)判断日期谁大谁小,不用挨个挨个的判断年份,再判断月份,天数。直接看成一个8位的整数相比较就好了。
(p.s.所以说我写的判断是否合理的函数,logical也是可以改进的。只是最开始写的时候,并没有想到该方法。)

PAT 乙 1028 人口普查相关推荐

  1. 【PAT】1028 人口普查

    一.题目描述 PAT 1028 人口普查 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有 ...

  2. PAT乙级1028 人口普查 (20 分)

    1028 人口普查 (20 分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 2 ...

  3. pat 乙级 1028 人口普查(C++)

    题目 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 200 岁的老人,而今天是 2 ...

  4. PAT乙级—1028. 人口普查(20)-native

    某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过200岁的老人,而今天是2014年9月 ...

  5. pat乙级 1028 人口普查

    某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 200 岁的老人,而今天是 2014 ...

  6. PAT乙级(1028 人口普查)

    输入格式: 输入在第一行给出正整数 N,取值在(0,10​5​​]:随后 N 行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串).以及按 yyyy/mm/dd(即年/月/日)格式给出 ...

  7. PAT乙级C语言 1028 人口普查

    思路 判断是否符合要求并计数,把符合的结构输入另一个数组,对该数组进行qsort排序,然后输出第一个和最后一个元素里的相关成员 推荐 我觉得这个写的很好(呜呜呜我写了七十几行人家写二十几行就好了,差距 ...

  8. 【2020模拟考试T3】【PAT乙】1028 人口普查 (20分) 字符串比较

    problem 1028 人口普查 (20分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇 ...

  9. PAT 1028 人口普查

    1028 人口普查 (20 分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 2 ...

最新文章

  1. 编写jQueryUI插件(widget)
  2. 剑指offer_第7题_斐波那契数列
  3. lamp黄金组合apache+mysql+php的安装
  4. java面向对象知识汇总的思维导图
  5. 字节流转化为文件流_JAVA IO分析一:File类、字节流、字符流、字节字符转换流...
  6. 【企业管理】整理和思考-陈春花:2022年经营关键词
  7. pytorch argmax_一起无聊地用PyTorch刷爆sklearn的内置数据集吧(`?ω?′)
  8. StringBuilder的原理
  9. 科创板开户手续费要2万元,大家怎么看?
  10. 全国计算机等级考试题库二级C操作题100套(第18套)
  11. Scala里Map()集合
  12. CentOS 7 上安装 MySQL5.7
  13. python设计要求_Python高级应用程序设计任务要求
  14. VO中的Long类型数据通过注解的方式直接转换为String,防止数据失真
  15. K210系列开发板介绍
  16. centos6/7修改主机名的正确方法
  17. CTC loss 理解
  18. python解析excel公式_读取Excel单元格值,而不是计算它的公式-openpyx
  19. UML建模工具 Visual Paradigm敏捷开发教程(一):如何确立项目愿景
  20. vbox 虚拟机支持ipv6

热门文章

  1. 中国人工智能学会通讯——智力测试与智能测评的对比思考
  2. [转]一个男人该有的气质 (马云原话),二十几岁女孩该有的内涵(杨澜)。
  3. matlab手动圈目标区域,圈点处函数是要手动输入才可以的吗?
  4. Elasticsearch 倒排索引
  5. 20P59 PR模板现代干净设计彩色多用途垂直MG社交媒体动画图标抖音小视频竖屏
  6. Java 打印PDF文档 - 指定打印机、自定义纸张大小、设置打印参数、显示打印对话框等
  7. 【WLAN】【软件】NXP芯片方案用户态和内核态通讯方式小结
  8. 平面排版时,运用哪些方法可以突出中文的美感?
  9. 支付宝快捷注册万里汇WorldFirst个人账号教程!
  10. C语言 拨钟问题的两种解法。