吉大秦少游 2018-10-28 03:42 采纳率: 0%
浏览 1233
已采纳

1028 人口普查最后一个测试点通过不了

 //PAT1028V2
#include <stdio.h>

int main(){
    int n,count=0,i;    //n is the number of input
    scanf("%d",&n);
    struct birth{
        char name[6];
        int year;
        int month;
        int day;
    }a,max,min;
    max.year=2014,max.month=9,max.day=7;
    min.year=1814,min.month=9,min.day=5;

    for(i=0;i<n;i++){
        scanf("%s %d/%d/%d",&a.name,&a.year,&a.month,&a.day);
        count++;
        if((a.year>2014)||(a.year==2014&&a.month>9)||(a.year==2014&&a.month==9&&a.day>6)||(a.year<1814)||(a.year==1814&&a.month<9)||(a.year==1814&&a.month==9&&a.day<6)){
            count--;
            continue;
        }
        if((a.year<max.year)||(a.year==max.year&&a.month<max.month)||(a.year==max.year&&a.month==max.month&&a.day<max.day)){
            max=a;
        }
        if((a.year>min.year)||(a.year==max.year&&a.month>max.month)||(a.year==min.year&&a.month==min.month&&a.day>min.day)){
            min=a;
        }   
    }
    printf("%d",count);
    if(count!=0){
        printf(" %s %s",max.name,min.name);
    }
    return 0;
}
  • 写回答

2条回答 默认 最新

  • Italink 2018-10-28 04:25
    关注

    看注释.

     #include <stdio.h>
    
    int main() {
        int n, count = 0, i;    //n is the number of input
        scanf("%d", &n);
        struct birth {
            char name[6];
            int year;
            int month;
            int day;
        }a, max, min;
        max.year = 2014, max.month = 10, max.day = 7;
        min.year = 1814, min.month = 8, min.day = 1;
    
        for (i = 0; i<n; i++) {
            scanf("%s %d/%d/%d", &a.name, &a.year, &a.month, &a.day);
            count++;
            if ((a.year>2014) || (a.year == 2014 && a.month>9) || (a.year == 2014 && a.month == 9 && a.day>6) || (a.year<1814) || (a.year == 1814 && a.month<9) || (a.year == 1814 && a.month == 9 && a.day<6)) {
                count--;
                continue;
            }
            if ((a.year<max.year) || (a.year == max.year&&a.month<max.month) || (a.year == max.year&&a.month == max.month&&a.day<max.day)) {
                max = a;
            }
            //下方第二个逻辑判断把min错写成了max,写的时候没注意看吧
            if ((a.year>min.year) || (a.year == min.year&&a.month>min.month) || (a.year == min.year&&a.month == min.month&&a.day>min.day)) {
                min = a;
            }
        }
        printf("%d", count);
        if (count != 0) {
            printf(" %s %s", max.name, min.name);
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)