whale-1901 发表于 2020-10-3 19:05:27

为什么答案出错了呢

是一个输入年份和月份可以输出当月天数的程序
编译通过但是答案错误 到底是哪里出错了呢{:10_284:}


代码如下:
#include<stdio.h>
int main()
{
        int m,y;
        scanf("%d %d",&y,&m);
       
        if(y%4==0&&y%100!=0)
        {
       
                if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
                {
                        printf("31\n");
                }
                else if(m=2)
                {
                        printf("29\n");
                }
                else
                {
                        printf("30\n");
                }
        }
        if(y%400==0)
        {
       
                if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
                {
                        printf("31\n");
                }
                else if(m=2)
                {
                        printf("29\n");
                }
                else
                {
                        printf("30\n");
                }
        }
        else
        {
                if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
                {
                        printf("31\n");
                }
                else if(m=2)
                {
                        printf("28\n");
                }
                else
                {
                        printf("30\n");
                }
        }
        return 0 ;
}

whale-1901 发表于 2020-10-3 19:07:00

以及大佬可不可以介绍一个简单点的方法感觉我的程序好麻烦哦{:10_284:}

昨非 发表于 2020-10-3 21:34:30

whale-1901 发表于 2020-10-3 19:07
以及大佬可不可以介绍一个简单点的方法感觉我的程序好麻烦哦

#include<stdio.h>
int main()
{
        int m, y;
        scanf("%d %d", &y, &m);

        if (y % 4 == 0 && y % 100 != 0)
        {

                if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
                {
                        printf("31\n");
                }
                else if (m == 2) //你这里少打了各=
                {
                        printf("29\n");
                }
                else
                {
                        printf("30\n");
                }
        }
        if (y % 400 == 0)
        {

                if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
                {
                        printf("31\n");
                }
                else if (m == 2)//少了一个=
                {
                        printf("29\n");
                }
                else
                {
                        printf("30\n");
                }
        }
        else
        {
                if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
                {
                        printf("31\n");
                }
                else if (m == 2)//少等号
                {
                        printf("28\n");
                }
                else
                {
                        printf("30\n");
                }
        }
        return 0;
}


昨非 发表于 2020-10-3 21:38:44

#include<stdio.h>
int main()
{
        int m, y;
        printf("请依次输入年,月:");
        scanf("%d %d", &y, &m);

        if ((y % 4 == 0 && y % 100 != 0)||(y % 400 == 0))
        {
                if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
                {
                        printf("31\n");
                }
                else if (m == 2) //你这里少打了各=
                        printf("29\n");
                else
                        printf("30\n");
        }
        else
        {
                if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
                {
                        printf("31\n");
                }
                else if (m == 2)//少等号
                        printf("28\n");
                else
                        printf("30\n");
        }
        return 0;
}

闰年判断少不了的,但可以合并

昨非 发表于 2020-10-7 11:47:51

楼主人呢
页: [1]
查看完整版本: 为什么答案出错了呢