#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;
}