为什么闰年的天数不成立



#include
int leap(int a)
{
    if(a%400==0||a%4==0&&a%100!=0)
    {
    a=1;
    return a;
    }  
    else
    {
    a=0;
    return a;}
}
int sumday(int a,int b,int c)
{   int d,e,f;
    d=b-1; 
    a=leap(a);
    switch(d)
    {
    case 0:e=0;break;
    case 1:e=31;break;
    case 2:e=59;break;
    case 3:e=90;break;
    case 4:e=120;break;
    case 5:e=151;break;
    case 6:e=181;break;
    case 7:e=212;break;
    case 8:e=243;break;
    case 9:e=273;break;
    case 10:e=304;break;
    case 11:e=334;break;
}
    if(a==1&&d>2)
    f=a+e+c;
    else
    f=e+c;
    return f;
}
int main()
{
    int a,b,c;
    printf("请输入年月日");
    scanf("%d %d %d",&a,&b,&c);
    printf("计算该日是该年的第%d天",sumday(a,b,c));
    return 0;
}为什么这个代码敲出来闰年和不润年数值一样

为什么润年一直不成立是我的代码出现问题了吗/

#include<stdio.h>
int leap(int a)
{
    if(a%4==0&&a%100!=0 || a%400==0)
    {
    a=1;
    printf("%d是闰年!",a);
    return a;
    }  
    else
    {
    a=0;
    return a;}
}
int sumday(int a,int b,int c)
{   int d,e,f;
    d=b-1; 
    a=leap(a);
    switch(d)
    {
    case 0:e=0;break;
    case 1:e=31;break;
    case 2:e=59;break;
    case 3:e=90;break;
    case 4:e=120;break;
    case 5:e=151;break;
    case 6:e=181;break;
    case 7:e=212;break;
    case 8:e=243;break;
    case 9:e=273;break;
    case 10:e=304;break;
    case 11:e=334;break;
}
    if(a==1&&d>=2)
    f=a+e+c;
    else
    f=e+c;
    return f;
}
int main()
{
    int a,b,c;
    printf("请输入年月日");
    scanf("%d %d %d",&a,&b,&c);
    printf("计算该日是该年的第%d天",sumday(a,b,c));
    return 0;
}

if(a==1&&d>=2)
d是b-1,你输入b=3,那么d就是2,你是 if(a==1 && d>2),这个条件要求月份必须是4月份及以后才满足,3月份是不满足的。所以改成d>=2或者 b>2

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632