日期对应天数问题,修改下我的代码

日期对应天数问题。代码输出的结果不对
有三个函数:判断日期合法性 判断闰年,求天数

#include "stdio.h"
int flag1,flag2,day1;
int isdate(int year,int month,int day);
int isdate(int year,int month,int day)//判断日期合法性
{
    int flag2=0;
    scanf("%d%d%d",&year,&month,&day);
    if(day>=1&&day<=31&&(month==1||month==3||month==5||month==7||month==8||month==10||month==12))
           flag2=1;
    else if(day>=1&&day<=30&&(month==4||month==6||month==9||month==11))
           flag2=1;
    else if(isleap(year)&&day<=29&&day>=1&&month==2)
           flag2=1;
    else if(isleap(year)&&day<=28&&day>=1&&month==2)
        flag2=1;
    return flag2;
}
int isleap(int year);
int isleap(int year)//判断闰年
{
    int flag1=0;
    if((year%4==0&&year%100!=0)||year%400==0)
     flag1=1;
return flag1;
}
int days(int month,int day);
int days(int month,int day)//求天数
{
    int day1;
   switch(month)
{
case 1:day1=0;break;
case 2:day1=31;break;
case 3:day1=59;break;
case 4:day1=90;break;
case 5:day1=120;break;
case 6:day1=151;break;
case 7:day1=181;break;
case 8:day1=212;break;
case 9:day1=243;break;
case 10:day1=273;break;
case 11:day1=304;break;
case 12:day1=334;break;
}
   return day1;
}

 
int main()
{
int year,month,day,a=0,b=0,c=0;
scanf("%d-%d-%d",&year,&month,&day);
a=isdate(year,month,day);
if(a=1)
{
    b=isleap(year);
    if(b=1)
    {
        c=days(month,day)+day+1;
        printf("NO:%d",c);
    }else{
        c=days(month,day)+day;
        printf("NO:%d",c);
    }
}else{
    printf("DateError");
}
return 0;
}


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

#define YEAR_ERROR -1
#define MONTH_ERROR -2
#define DAY_ERROR -3

/** 项目:
* 判断是否为闰年 Is_Leap
* 计算一年中月份的天数 Get_YM_day
* 输出日期 计算天数 Get_YMD_Total
*/

/** 判断是否为闰年 */
bool Is_Leap(int year)
{
    return (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
}

/** 计算一年中月份的天数 Get_YM_day */
int Get_YM_Day(int year, int month)
{
    // 静态常性数组 static 只初始化一次 const 且只可读不可写
    static const int days[13] = { 29, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    //                              0   1   2   3   4   5   6   7   8   9   10  11  12
    if (month == 2 && Is_Leap(year))
    {
        month = 0;
    }
    return days[month];
}

/** 输出日期 计算天数 Get_YMD_Total */
int Get_YMD_Total(int year, int month, int day)
{
    // 循环叠加用户输入月份的前几个月的天数 + 当月的天数 如:用户输入 6 月 8 日 计算前 5 个月的天数 + 8 天
    int sum = 0;
    if (year < 1) return YEAR_ERROR;                                    // 输入的年份出错
    if (month < 1 || month > 12) return MONTH_ERROR;                    // 输入的月份出错
    if (day < 1 || day > Get_YM_Day(year, month)) return DAY_ERROR;        // 输入的天数出错
    for (int i = 1; i < month; ++i)
    {
        sum += Get_YM_Day(year, i);        
    }
    sum += day;
    return sum;
}

/** 主函数 */
int main()
{
    int year, month, day, day1;
    char ch = '\0';
    do {
        printf("Input (year month day): \n");
        scanf_s("%d %d %d", &year, &month, &day);
        // 计算一年中月份的天数
        day1 = Get_YM_Day(year, month);
        // 输出日期 计算天数
        int total = Get_YMD_Total(year, month, day);
        switch (total)
        {
        case YEAR_ERROR:
            printf("year input error! \n");
            break;
        case MONTH_ERROR:
            printf("month input error! \n");
            break;
        case DAY_ERROR:
            printf("day input error! \n");
            break;
        default:
            if (Is_Leap(year)) {
                printf("%d年是闰年!\n", year);
            }
            else
            {
                printf("%d年不是闰年!\n", year);
            }
            printf("%d年的%d月==>%d天\n", year, month, day1);
            printf("%d年%d月%d日==>%d天\n", year, month, day, total);
            break;
        }
        printf("是否继续(y/n)... \n");
        // 清除缓冲区 // fflush(stdin); 在 vs 2015 年之后就失效了
        // 清除缓冲区的作用:键盘录入时会有 ‘\n’ 为了避免 ‘\n’的干扰需清除缓冲区
        rewind(stdin);        
        ch = getchar();
    } while (ch == 'Y' || ch == 'y');
    return 0;
}