问题描述:

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

这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 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不通过相关推荐

  1. 狂暴者 pat basic 练习二十八 人口普查 测试点3格式错误

    心得: 1.学习的时候要把以前的经验都牢记于心,比如"优先级不等比较法","字符串分割法" 2.结构体传参也是有传值和传址之分,和基本类型一样,不用指针传的是拷 ...

  2. 浙大PAT1028人口普查 C++ 测试点格式错误 问题所在

    这个格式其实就是当符合要求的人的个数为0时,应该怎样输出结果,具体看代码. #include <iostream> #include <string> using namesp ...

  3. 测试点3错的来:1028 人口普查 (20分)(解题报告)

    立志用更少的代码做更高效的表达 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 20 ...

  4. pta-乙级 1028 人口普查 (测试点3、4)

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

  5. 1028 人口普查 (20 分)测试点3格式错误

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

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

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

  7. 1028 人口普查(C语言)

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

  8. 【PAT】1028 人口普查

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

  9. pat乙级 1028 人口普查

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

  10. PAT 乙 1028 人口普查

    1028. 人口普查(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 某城镇进行人口普查,得到了全体居民的 ...

最新文章

  1. SpringBoot (五) :SpringBoot整合mybatis
  2. π型滤波频率计算_滤波电路的总结
  3. SQL2008 提示评估期已过的解决方法
  4. 最强轻量级目标检测yolo fastest
  5. Nginx--虚拟主机
  6. android sharedpreferences 工具类,android sharedpreferences工具类
  7. 数据科学和统计学_数据科学中的统计
  8. 【刷题】洛谷 P2709 小B的询问
  9. kotlin中判断字符串_Kotlin程序删除字符串中所有出现的字符
  10. Joomla网站的移植步骤
  11. Ubuntu16.04 安装Tensorflow-CPU
  12. 移动硬盘与电脑连接后 计算机中找不到,移动硬盘不显示盘符怎么办 移动硬盘显示不出来解决方法【详解】...
  13. 5g网络模式是以什么划分的_5G组网的8种方式,有什么不同?各方式又怎么进行网络部署...
  14. Java8 Instant 时间戳
  15. 简单图片木马的生成与利用
  16. html submit提交事件,submit方法与onsubmit事件
  17. bs前端设计--多页签界面
  18. 用Python求完美数
  19. OpenCV——去雾
  20. 添加项目到debug调试

热门文章

  1. 【天光学术】会计学论文:电子计算机在会计方面的运用(节选)
  2. 成都学编程技术去哪家培训?
  3. 教妹学Java:Java 运算符一锅炖
  4. C课程设计-医院预约系统
  5. 为什么要做自动化测试
  6. url增加签名验证防篡改
  7. 国家出手在医疗机构开辟互联网医疗
  8. [dijkstra] 小木乃伊到我家 长沙理工大学校赛E
  9. 2018年长沙理工大学第十三届程序设计竞赛 E小木乃伊到我家(spfa模版)
  10. 用于即时医疗诊断应用的多重免疫传感器