标题:PAT(简单题):人口普查。一个测试点没过,求思路
取消只看楼主
moox
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:92
专家分:93
注 册:2017-1-21
结帖率:82.35%
已结贴  问题点数:20 回复次数:1 
PAT(简单题):人口普查。一个测试点没过,求思路
链接:https://www.
程序代码:
#include<stdio.h>
#include<cstring>
struct people
{
    char name[10];
    char birthday[11];
    //people():name(""),birthday(""){}
};
int main()
{
    int n,count=0;
    scanf("%d",&n);

    char today[11]="2014/09/06";
    char lower_bound[11]="1814/09/06";

    struct people maxD={"","2014/09/06"},minD={"","1814/09/06"};//maxD = the oldest, minD=the youngest;
    for(int i=0;i<n;i++)
    {
        struct people s;
        scanf(" %s%s",s.name,s.birthday);
        if(strcmp(s.birthday,today)>0 || strcmp(s.birthday,lower_bound)==-1) continue;//find the worry date;
        count++;
        if(strcmp(s.birthday,maxD.birthday)<0) maxD=s;//s is older than maxD
        if(strcmp(s.birthday,minD.birthday)>0) minD=s;//s is younger than minD
    }
    printf("%d",count);
    if(count == 1)
        if(strcmp(maxD.name,minD.name)>0) printf(" %s %s\n",maxD.name,maxD.name);//when count=1
        else printf(" %s %s\n",minD.name,minD.name);
    if(count > 1) printf(" %s %s\n",maxD.name,minD.name);
    return 0;
}

我的思路就是字符串比较,年龄大的字符串(生日)较小,年龄小的字符串(生日)较大。
要考虑的有,当输入都是不合理的生日,即没有有效的生日;输入只有一个有效的生日;输入只有一个有效的生日且该生日为边界(为2014/09/06或1814/09/06);

疑惑:有一个测试点没通过,想了一下午还是不知道,求空闲的大佬看看哪种情况没考虑到。

[此贴子已经被作者于2018-4-9 18:02编辑过]

搜索更多相关主题的帖子: people name count strcmp 生日 
2018-04-06 17:59
moox
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:92
专家分:93
注 册:2017-1-21
得分:0 
回复 2楼 rjsp
可是我电脑上测试显示前面字符串时为1,后面大为-1,我就这样写了
2018-04-09 09:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485796-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019233 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved