PAT B1028 人口普查
时间:2019-08-23
本文章向大家介绍PAT B1028 人口普查,主要包括PAT B1028 人口普查使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
PAT B1028 人口普查
题目描述:
某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。
这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 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
参考代码:
1 /**************************************************** 2 PAT B1028 人口普查 3 ****************************************************/ 4 #include <iostream> 5 #include <algorithm> 6 #include <vector> 7 8 using namespace std; 9 10 const int TODAY = 20140906; //对应2014.09.06 11 const int NORMAL = 18140906; //对应1814.09.06 12 13 struct BornInfo { 14 string name = ""; 15 int year = 0, month = 0, day = 0; 16 int time = 0; //自定义出生时间标志:time = year * 10000 + month * 100 + day。方便日期合理与否和年龄大小的判断 17 }; 18 19 int main() { 20 int count = 0; 21 vector<BornInfo> legalInfo; 22 23 cin >> count; 24 25 char c; //读取日期中的分隔符 26 BornInfo temp; //临时存储人员信息 27 int edgeTime[2] = { TODAY, NORMAL }; //{年龄最大的人的出生时间标志,年龄最小的人的出生时间标志} 28 int edgePerLoc[2] = { 0 }; //{年龄最大的人对应的存储位置,年龄最小的人对应的存储位置} 29 for (int i = 0; i < count; ++i) { 30 cin >> temp.name >> temp.year >> c >> temp.month >> c >> temp.day; 31 32 temp.time = temp.year * 10000 + temp.month * 100 + temp.day; //计算出生时间标志 33 34 if (temp.time <= TODAY && temp.time >= NORMAL) { //判断出生日期是否合理 35 legalInfo.push_back(temp); 36 37 if (temp.time > edgeTime[1]) { //比较、更新年龄最大、最小者的信息 38 edgePerLoc[1] = legalInfo.size() - 1; 39 edgeTime[1] = temp.time; 40 } 41 else if (temp.time < edgeTime[0]) { 42 edgePerLoc[0] = legalInfo.size() - 1; 43 edgeTime[0] = temp.time; 44 } 45 } 46 } 47 48 if (legalInfo.size() == 0) { 49 cout << '0'; 50 } 51 else { 52 cout << legalInfo.size() << ' ' << legalInfo[edgePerLoc[0]].name << ' ' << legalInfo[edgePerLoc[1]].name; 53 } 54 55 return 0; 56 }
注意事项:
1:比较日期时,如果分别比较年、月、日会有多种情况,直接将年、月、日拼接成一个新的数字(108以内,在int类型表示范围内)并进行比较可以“一步到位”的得到两个日期的比较结果,上述代码使用的就是这种比较日期的方法。
原文地址:https://www.cnblogs.com/mrdragon/p/11397732.html
- 时代的需要:越来越多的Java工程师开始转向hadoop?
- 如何结合IbatisNet的LIST遍历实现模糊查询
- Flash/Flex学习笔记(41):碰撞检测
- [.NET网格计算框架] Alchemi
- 修改WordPress登陆文件名wp-login.php,防密码被暴力破解
- NDoc - .NET 代码文档生成器
- Mono P/Invoke :DLLImport
- MONO x64 amd_x64
- DN榜:最近3个域名成交金额均达到六位数美金
- 采访Philipp Crocoll:安卓平台上整合Java和C#
- “AS3.0高级动画编程”学习:第一章高级碰撞检测
- AI分析师PK人类分析师,结果竟然是……
- 纯代码修改WordPress 默认 Gravatar 头像的方法
- 这些行业的饭碗要被机器人抢了 再不努力就被它们PK掉了!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【python-leetcode295-双堆】数据流的中位数
- join的使用
- C语言之不能在scanf中使用换行
- 聊聊java中的哪些Map:(五)HashTable与HashMap的区别
- paddlepaddle之飞机识别
- c语言之条件编译
- python之使用魔术方法__getitem__和__len__
- B+Tree index structures in InnoDB(7.InnoDB中B+树的索引结构)
- Java基础
- 广度优先遍历--选课的智慧
- paddlepaddle目标检测之水果检测(yolov3_mobilenet_v1)
- 【每日一题】41. First Missing Positive
- springmvc之第一个springmvc程序
- python小例子(一)
- springmvc之RequestMapping注解既可以修饰类也可以修饰方法