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 }

原文地址:https://www.cnblogs.com/centuries/p/8721938.html

时间: 2024-11-09 00:31:13

1028.人口普查(PAT)的相关文章

1028. 人口普查

1028. 人口普查(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉. 输入格式: 输入在第一行给出正整数N,取值在(0, 105]:随

1028. 人口普查(20)

1028. 人口普查(20) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉. 输入格式: 输入在第一行给出正整数N,取值在(0, 105]:随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串).以及按"yyyy/mm/dd"(即年/月/日)格式给出的生

PAT-乙级-1028. 人口普查(20)

1028. 人口普查(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉. 输入格式: 输入在第一行给出正整数N,取值在(0, 105]:随

P 1028 人口普查

转跳点:?? 1028 人口普查 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉. 输入格式: 输入在第一行给出正整数 N,取值在(:随后 N 行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串).以及按 yyyy/mm/dd(即年/月/日)

PTA乙级 (*1028 人口普查 (20分))

1028 人口普查 (20分) https://pintia.cn/problem-sets/994805260223102976/problems/994805293282607104 #include <iostream> #include <cstring> #include <string> #include <cmath> #include <algorithm> using namespace std; int main() { in

PAT (Basic Level) Practise:1028. 人口普查

[题目链接] 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉. 输入格式: 输入在第一行给出正整数N,取值在(0, 105]:随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串).以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日.题目保证最年长和最年轻

1028 人口普查 (20 分)

某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉. 输入格式: 输入在第一行给出正整数 N,取值在(:随后 N 行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串).以及按 yyyy/mm/dd(即年/月/日)格式给出的生日.题目保证最年长和最

1028 人口普查 (20 分)

某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉. 输入格式: 输入在第一行给出正整数 N,取值在(:随后 N 行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串).以及按 yyyy/mm/dd(即年/月/日)格式给出的生日.题目保证最年长和最

PAT:1028. 人口普查(20) AC

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<algorithm> using namespace std; struct STU { char mname[10]; int y,m,d; }tmp,old,young,left,right; void init() { old.y=right.y=2014; young.y=left.y=1814; old.m=right.