这个C语言代码可以编译成功,但是天数结果不正确

#include
#include

main()
{
int year,month,day,y1,m1,d1,year3,month3,day3,y2;
printf("请输入您的生日\n");
printf("XXXX,XX,XX\n");
scanf("%d,%d,%d",&y1,&m1,&d1);//用户输入出生日期

/*判断生日格式是否正确 */
{
    if(y1>1000){
        if(m1 > 0&m1 <13){
            if(d1>0&d1<3299){

            }
            else{
                printf("生日格式不正确,请从新填写");
            }

        } 
        else{
            printf("生日格式不正确,请从新填写");
        } 
}
     else{
    printf("生日格式不正确,请从新填写");
 }


                } 

/*读取今天时间 */
{
time_t nowtime;
struct tm *timeinfo;
time( &nowtime );
timeinfo = localtime( &nowtime );
int year, month, day;
year = timeinfo->tm_year + 1900;
month = timeinfo->tm_mon + 1;
day = timeinfo->tm_mday;
printf("%d %d %d\n", year, month, day);

}

/*进行两个日期差值运算*/
{
    /*天数比较*/ 
if(day>d1){
        day3 = day -d1; //天数大于出生日期 
        printf("%d",day3);
    }
    else{
        day3 = (d1 - day);//天数小于出生日期 
        printf("%d",day3);

    } 

}

你的题目要求是什么 代码看着头大

不急着算天数,我们先看看
1.生日和当前日期是否在同一个月。
a. 如果是在同一个月,再看看当前日期是否大于生日日期。
如果大那么说明生日已经过完了,计算应该是现在到明年生日的天数,天数 = 当前月剩余天数 + 下一个月到生日前一个月正月天数的累计天数 + 生日日期;
如果小于才是用生日减去当前日期得到天数. 天数 = 生日日期 - 当前日期。
b. 如果不在同一个月,且当前月份大于生日月,那么说明生日已经过了,计算应该是现在到明年生日的天数。天数 = 当前月剩余天数 + 下一个月到生日前一个月正月天数的累计天数 + 生日日期;
c. 如果不在同一个月,且当前月份小于生日月,那么生日还没到。天数 = 当前月剩余天数 + 下一个月到生日前一个月正月天数的累计天数 + 生日日期;
另外由于闰年的2月是29天,计算多个月天数的时候要注意这一点。

 //计算生日剩余天数
int CountDays()
{
    int year,month,day,y1,m1,d1,day3;
    int year1[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//当年
    int year2[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//下年
    time_t nowtime;
    struct tm *timeinfo;

    while(1)
    {
        printf("请输入您的生日\n");
        printf("XXXX,XX,XX\n");
        scanf("%d,%d,%d",&y1,&m1,&d1);//用户输入出生日期

        /*判断生日格式是否正确 */

        if(y1 > 1000)
        {
            if((m1 > 0) && (m1 < 13))
            {
                if((d1 > 0) && (d1<32))
                {
                    break;
                }
                else
                {
                    printf("生日格式不正确,请从新填写");
                }

            } 
            else
            {
                printf("生日格式不正确,请从新填写");
            } 
        }
        else
        {
            printf("生日格式不正确,请从新填写");
        }

        system("cls");
    }




    /*读取今天时间 */


    time( &nowtime );
    timeinfo = localtime( &nowtime );

    year = timeinfo->tm_year + 1900;
    month = timeinfo->tm_mon + 1;
    day = timeinfo->tm_mday;
    printf("%d %d %d\n", year, month, day);



    //是闰年就将2月份设置为29天
    if(((year%4 == 0)&&(year%100 != 0)) || (year%400 == 0))
    {
        year1[2] = 29;
    }
    else if((((year + 1) % 4 == 0)&&((year + 1) % 100 != 0)) || ((year + 1) % 400 == 0))
    {
        year2[2] = 29;
    }

    /*进行两个日期差值运算*/

    /*天数计算*/ 
    day3 = 0;
    if((month < m1) || ((m1 == month) && (day < d1)))
    {//生日没到
        while(month < m1)
        {
            day3 = day3 + year1[month];
            month++;
        }
        day3 = day3 + d1 - day;
    }
    else
    {//生日过了
        while(month < 13)
        {//当年整月天数
            day3 = day3 + year1[month];
            month++;
        }
        month = 1;
        while(month < m1)
        {//来年整月天数
            day3 = day3 + year2[month];
            month++;
        }
        day3 = day3 + d1 - day;
    }

    return day3;
}

这是代码 你参考参考