#include<stdio.h>
#include<math.h>
int leafyear(int year);
int passday(struct date date);
struct date
{
    int year;
    int mouth;
    int day;
};
void main()
{
    struct date a,b;
    int day=0;    //最后的结果
    printf("请输入第一个日期<年 月 日>: ");
    scanf("%d%d%d",&a.year,&a.mouth,&a.day);
    printf("请输入第二个日期<年 月 日>: ");
    scanf("%d%d%d",&b.year,&b.mouth,&b.day);
    if(a.year==b.year)
    {
        day=abs(passday(a)-passday(b));    //abs()求绝对值
    }
    if(a.year!=b.year)
    {
        day=abs(a.year-b.year)+abs(passday(a)-passday(b));
    }
    printf("相差 %d 天!",day);
}
int leafyear(int year)
{
    if((year%4==0 && year%100!=0) || year%400==0)
    {
        return 1;    //是闰年
    }
    else
    {
        return 0;    //不是闰年
    }
}
int passday(struct date date)    //该年的第几天(包括闰年+1)
{
    int i;
    int day=1;
    for(i=1;i<date.mouth;i++)
    {
        if(i==2)
        {
            if(leafyear(date.year))
            {
                day+=29;
            }
            else
            {
                day+=28;
            }
            continue;
        }
        if(i==4 || i==6 || i==9 || i==11)
        {
            day+=30;
        }
        else
        {
            day+=31;
        }
    }
    day+=date.day;
    return day;
}
重新发一个,上面的貌似有BUG
#include<stdio.h>
#include<math.h>
int leafyear(int year);
int passday(struct date date);
struct date
{
    int year;
    int mouth;
    int day;
};
void main()
{
    struct date a,b;
    int i,count=0;
    int day=0;    //最后的结果
    printf("请输入第一个日期<年 月 日>: ");
    scanf("%d%d%d",&a.year,&a.mouth,&a.day);
    printf("请输入第二个日期<年 月 日>: ");
    scanf("%d%d%d",&b.year,&b.mouth,&b.day);
    if(a.year==b.year)
    {
        day=abs(passday(a)-passday(b));    //abs()求绝对值
    }
    if(a.year<b.year)
    {
        for(i=0;i<(b.year-a.year)-1;i++)
        {
            if(leafyear(a.year+i+1))
            {
                count++;
            }
        }
        if(i==0)
        {
            day=(((leafyear(a.year)+365)-passday(a))+passday(b))+365*i+count;
        }
        else
        {
            day=(((leafyear(a.year)+365)-passday(a))+passday(b))+365*(i-1)+count;
        }
    }
    
    if(a.year>b.year)
    {
        for(i=0;i<(a.year-b.year)-1;i++)
        {
            if(leafyear(b.year+i+1))
            {
                count++;
            }
        }
        if(i==0)
        {
            day=(((leafyear(a.year)+365)-passday(a))+passday(b))+365*i+count;
        }
        else
        {
            day=(((leafyear(a.year)+365)-passday(a))+passday(b))+365*(i-1)+count;
        }
    }
    printf("相差 %d 天!",day);
}
int leafyear(int year)
{
    if((year%4==0 && year%100!=0) || year%400==0)
    {
        return 1;    //是闰年
    }
    else
    {
        return 0;    //不是闰年
    }
}
int passday(struct date date)    //该年的第几天(包括闰年+1)
{
    int i;
    int day=1;
    for(i=1;i<date.mouth;i++)
    {
        if(i==2)
        {
            if(leafyear(date.year))
            {
                day+=29;
            }
            else
            {
                day+=28;
            }
            continue;
        }
        if(i==4 || i==6 || i==9 || i==11)
        {
            day+=30;
        }
        else
        {
            day+=31;
        }
    }
    day+=date.day;
    return day;
}




