P5690求助!!!
  • 板块题目总版
  • 楼主txtxdy
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/7/8 11:40
  • 上次更新2023/11/3 11:04:41
查看原帖
P5690求助!!!
472590
txtxdy楼主2023/7/8 11:40

P5690为什么第三个测试点WA啊,弄了一早上了,有没有dalao能教教

#include <stdio.h>
#include <stdlib.h>

int main()
{
        char d[6];
        
        scanf("%s",d);
        
        int m=(d[0]-'0')*10+(d[1]-'0'),day=(d[3]-'0')*10+(d[4]-'0'),s=0;//计算月份以及日期
        
        if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)//判断是否为大月
        {
            if(day<0||day>31)//判断日期是否正确
            {
                s+=(d[3]-'0')>=0&&(d[3]-'0')<=3?0:1;
                s+=((d[3]-'0')==3?((d[4]-'0')==0||(d[4]-'0')==1?0:1):((d[3]-'0')==0?((d[4]-'0')>=1||(d[4]-'0')<=9?0:1):((d[4]-'0')>=0||(d[4]-'0')<=9?0:1)));
            }
            if(day==0)s++;//在日期为0的情况下,只需要把各位数改为1即可正确,所以为0加一
        }
        
        else if(m==4||m==6||m==9||m==11)//判断是否为小月
        {
            if(day<0||day>30)//判断日期是否正确
            {
                s+=(d[3]-'0')>=0&&(d[3]-'0')<=3?0:1;
                s+=(d[3]-'0')==3?((d[4]-'0')==0?0:1):((d[3]-'0')==0?((d[4]-'0')>=1||(d[4]-'0')<=9?0:1):((d[4]-'0')>=0||(d[4]-'0')<=9?0:1));
            }
            if(day==0)s++;//在日期为0的情况下,只需要把各位数改为1即可正确,所以为0加一
        }
        
        else if(m==2)//判断是否为2月
        {
            if(day<0||day>28)
            {
                s+=(d[3]-'0')>=0&&(d[3]-'0')<=2?0:1;
                s+=(d[3]-'0')==2?((d[4]-'0')>=0||(d[4]-'0')<=8?0:1):((d[3]-'0')==0?((d[4]-'0')>=1||(d[4]-'0')<=9?0:1):((d[4]-'0')>=0||(d[4]-'0')<=9?0:1));
            }
            if(day==0)s++;//在日期为0的情况下,只需要把各位数改为1即可正确,所以为0加一
        }
        
        else//遇到其他情况
        {
            s++;//月份不对的情况下不管是什么二位数,都只需要改一位就能正确
            if(d[1]-'0'==1||d[1]-'0'==2||d[1]-'0'==3||d[1]-'0'==5||d[1]-'0'==7||d[1]-'0'==8||d[1]-'0'==0)
            {//月份个位数为1,2,3,5,7,8,0时可以改为大月,3,5,7,8,10,11,12月为大月
                if(day<0||day>31)//判断日期是否正确
                {
                    s+=(d[3]-'0')>=0&&(d[3]-'0')<=3?0:1;
                    s+=(d[3]-'0')==3?((d[4]-'0')==0||(d[4]-'0')==1?0:1):((d[3]-'0')==0?((d[4]-'0')>=1||(d[4]-'0')<=9?0:1):((d[4]-'0')>=0||(d[4]-'0')<=9?0:1));
                }               
            }
            if(d[1]-'0'==4||d[1]-'0'==6||d[1]-'0'==9)
            {//月份个位数为4,6,9时可以改为小月4,6,9月为小月
                if(day<0||day>30)//判断日期是否正确
                {
                    s+=(d[3]-'0')>=0&&(d[3]-'0')<=3?0:1;
                    s+=(d[3]-'0')==3?((d[4]-'0')==0?0:1):((d[3]-'0')==0?((d[4]-'0')>=1||(d[4]-'0')<=9?0:1):((d[4]-'0')>=0||(d[4]-'0')<=9?0:1));
                }
            }
            if(day==0)s++;//在日期为0的情况下,只需要把各位数改为1即可正确,所以为0加一
        }
        
        printf("%d\n",s);
    return 0;
}


2023/7/8 11:40
加载中...