PAT1028人口普查,测试点3不通过
问题描述:
某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。
这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 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>
#define maxSize 100000
#define Now 20140906typedef struct sb{char name[6];int years;
} sb;sb *findOld(sb arr[], int n)
{int i;sb *Max = arr;for(i = 0; i < n; ++i)if(arr[i].years > Max->years)Max = &arr[i];return Max;
}sb *findYoung(sb arr[], int n)
{int i;sb *Min = arr;for(i = 0; i < n; ++i)if(arr[i].years < Min->years)Min = &arr[i];return Min;
}int main()
{int N, i, j, count;sb village[maxSize];int yyyy, mm, dd;sb *max, *min;scanf("%d", &N);for(i = 0, count = 0, j = 0; i < N; ++i){scanf("%s %d/%d/%d", village[j].name, &yyyy, &mm, &dd);village[j].years = Now - (yyyy*10000+mm*100+dd);if(village[j].years<=2000000 && village[j].years>=0){++count;++j;}}max = findOld(village, count);min = findYoung(village, count);printf("%d %s %s", count, max->name, min->name);return 0;
}
执行结果:
分析:
测试点三针对的是输入中有效生日数为零的情况,在进行输出时需要单独处理,比如添加以下代码:
if(count == 0){
printf("0\n");
return 0;
}
总结:
本题并不难,但是注重细节的考察,在思考问题的时候一定要全面,一些特殊的案例(如本题中的0案例)需要特别注意,单独处理。加油吧,小豆子!
PAT1028人口普查,测试点3不通过相关推荐
- 狂暴者 pat basic 练习二十八 人口普查 测试点3格式错误
心得: 1.学习的时候要把以前的经验都牢记于心,比如"优先级不等比较法","字符串分割法" 2.结构体传参也是有传值和传址之分,和基本类型一样,不用指针传的是拷 ...
- 浙大PAT1028人口普查 C++ 测试点格式错误 问题所在
这个格式其实就是当符合要求的人的个数为0时,应该怎样输出结果,具体看代码. #include <iostream> #include <string> using namesp ...
- 测试点3错的来:1028 人口普查 (20分)(解题报告)
立志用更少的代码做更高效的表达 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 20 ...
- pta-乙级 1028 人口普查 (测试点3、4)
PTA-乙级 1028 人口普查 (测试点3.4) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已 ...
- 1028 人口普查 (20 分)测试点3格式错误
1028 人口普查 (20 分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 2 ...
- 【2020模拟考试T3】【PAT乙】1028 人口普查 (20分) 字符串比较
problem 1028 人口普查 (20分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇 ...
- 1028 人口普查(C语言)
1028 人口普查 题目描述 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 200 ...
- 【PAT】1028 人口普查
一.题目描述 PAT 1028 人口普查 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有 ...
- pat乙级 1028 人口普查
某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 200 岁的老人,而今天是 2014 ...
- PAT 乙 1028 人口普查
1028. 人口普查(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 某城镇进行人口普查,得到了全体居民的 ...
最新文章
- SpringBoot (五) :SpringBoot整合mybatis
- π型滤波频率计算_滤波电路的总结
- SQL2008 提示评估期已过的解决方法
- 最强轻量级目标检测yolo fastest
- Nginx--虚拟主机
- android sharedpreferences 工具类,android sharedpreferences工具类
- 数据科学和统计学_数据科学中的统计
- 【刷题】洛谷 P2709 小B的询问
- kotlin中判断字符串_Kotlin程序删除字符串中所有出现的字符
- Joomla网站的移植步骤
- Ubuntu16.04 安装Tensorflow-CPU
- 移动硬盘与电脑连接后 计算机中找不到,移动硬盘不显示盘符怎么办 移动硬盘显示不出来解决方法【详解】...
- 5g网络模式是以什么划分的_5G组网的8种方式,有什么不同?各方式又怎么进行网络部署...
- Java8 Instant 时间戳
- 简单图片木马的生成与利用
- html submit提交事件,submit方法与onsubmit事件
- bs前端设计--多页签界面
- 用Python求完美数
- OpenCV——去雾
- 添加项目到debug调试