1028.人口普查(PAT)

Posted centuries

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1028.人口普查(PAT)相关的知识,希望对你有一定的参考价值。

题目分析:构造一个Compare函数,比较日期的大小即可,不过要注意如果没有合法的生日,就只能输出一个零(这里贼坑)。

 

代码如下

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 struct person{
 5     char name[20];
 6     int year;
 7     int month;
 8     int day;
 9 }youngest,oldest;
10 
11 void Init(){
12     youngest.year = 2014;
13     youngest.month = 9;
14     youngest.day = 6;
15     oldest.year = 1814;
16     oldest.month = 9;
17     oldest.day = 6;
18 }
19 bool compareTo(person &p1,person &p2){
20     if(p1.year>p2.year)
21         return false;
22     if(p1.year<p2.year)
23         return true;
24     if(p1.year==p2.year){
25         if(p1.month>p2.month)
26            return false;
27         if(p1.month<p2.month)
28            return true;
29         if(p1.month==p2.month){
30             if(p1.day>p2.day)
31                return false;
32             if(p1.day<p2.day)
33                return true;
34             if(p1.day==p2.day)
35                return false;
36         }
37     }
38 }
39 
40 int main(){
41     Init();
42     int n;
43     person temp,min,max;
44     min = oldest;
45     max = youngest;
46     scanf("%d",&n);
47     int acount = 0;
48     while(n--){
49         scanf("%s %d/%d/%d",&temp.name,&temp.year,&temp.month,&temp.day);
50         if(compareTo(youngest,temp)||compareTo(temp,oldest))
51            continue;
52         else{
53             acount++;
54             if(compareTo(min,temp)) min = temp;
55             if(compareTo(temp,max)) max = temp;
56         }
57     }
58     if(acount!=0)
59     printf("%d %s %s\n",acount,max.name,min.name);
60     else printf("0\n");
61     return 0;
62 }

 

以上是关于1028.人口普查(PAT)的主要内容,如果未能解决你的问题,请参考以下文章

PAT乙级1028 人口普查 (20 分)

PAT|1028 人口普查(简单模拟)

PAT——乙级1028

1028. 人口普查(20)

P 1028 人口普查

1028 人口普查 (20 分)