• 人口普查(20) PAT


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

    题目描述

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



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

    岁的生日和未出生的生日都是不合理的,应该被过滤掉。

    输入描述:

    输入在第一行给出正整数N,取值在(0, 10
    5
    ];随后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 #include<iostream>
     2 #include<vector>
     3 struct people{
     4     char name[5];
     5     int y;
     6     int m;
     7     int d;
     8     int c;
     9 };
    10 int main(){
    11     int n;
    12     people p[10000];
    13     people p1,p2;
    14     scanf("%d",&n);
    15     int i=0;
    16     int k=0;
    17     while(n--){
    18     scanf("%s %d/%d/%d",p[i].name,&p[i].y,&p[i].m,&p[i].d);
    19     p[i].y*=10000;
    20     p[i].m*=100;
    21     p[i].c=p[i].y+p[i].m+p[i].d;
    22     if(p[i].c>=18140906&&p[i].c<=20140906){
    23         k++;
    24         if(k==1){
    25             p1=p[i];
    26             p2=p[i];
    27         }
    28         else if(p[i].c<p1.c) p1=p[i];
    29         else if(p[i].c>p2.c)  p2=p[i];
    30     }
    31     
    32     
    33     i++;
    34 }
    35 if(k!=0) 
    36 printf("%d %s %s",k,p1.name,p2.name);
    37 else printf("0");
    38 }
  • 相关阅读:
    ArrayList.sort & Collections.sort
    preliminary->advanced exam coding part
    Spring JDBC的使用
    Spring之面向切面编程(AOP)
    Spring静态代理与动态代理
    Spring之JDBC的连接与注解的使用
    Spring入门之Bean的实例化方式
    Mybatis入门(二)
    Mybatis入门(一)
    正则表达式——转载
  • 原文地址:https://www.cnblogs.com/fromzore/p/9299557.html
Copyright © 2020-2023  润新知