博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT-BASIC-1028-人口普查
阅读量:4705 次
发布时间:2019-06-10

本文共 1282 字,大约阅读时间需要 4 分钟。

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

这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过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 
using namespace std;struct DATA{ char name[10]; char birth[10+5];};vector
arr;const char date1[] = "2014/09/06";const char date2[] = "1814/09/06";bool cmp(const DATA &a, const DATA &b){ return strcmp(a.birth, b.birth) < 0;}int main(){ int n; DATA tmp; scanf("%d", &n); for(int i = 0; i < n; ++i){ scanf("%s %s", tmp.name, tmp.birth); if(strcmp(tmp.birth, date1) > 0){ continue; } if(strcmp(tmp.birth, date2) < 0){ continue; } arr.push_back(tmp); } sort(arr.begin(), arr.end(), cmp); if(arr.size() != 0){ printf("%d %s %s\n", arr.size(), arr[0].name, arr[arr.size()-1].name); } else{ printf("0"); } return 0;}
CAPOUIS'CODE

 

转载于:https://www.cnblogs.com/capouis/p/4641465.html

你可能感兴趣的文章
几道前端的面试题
查看>>
进程间通信的四种方式
查看>>
Sentinel系统监控Redis主从节点
查看>>
Java设计模式之《享元模式》及应用场景
查看>>
TX2安装QT
查看>>
PHP使用curl替代file_get_contents
查看>>
Webstorm通用设置
查看>>
组合数的求法 (n<=1e8 可以过来看)
查看>>
jquery倾斜的动画导航菜单
查看>>
JAVA IO流的简单总结+收集日志异常信息
查看>>
NetCore的配置管理(1)
查看>>
结构体变量、结构指针变量、结构数组作为函数的参数
查看>>
extern "C"
查看>>
【Mininet】基于Mininet测量路径的损耗率
查看>>
【Open vSwitch】Open vSwitch的VxLAN隧道网络实验
查看>>
【OpenDaylight】OpenDaylight的C/S模式实验
查看>>
【OpenDaylight】OpenDaylight二层转发机制实验
查看>>
纪中七日游——腐败篇
查看>>
题解P3942_将军令
查看>>
纪中七日游——总结篇 DAY1A&B
查看>>