#include<stdio.h>
typedef struct
{
int year;
int month;
int day;
}DATE;
int main()
{
int totalday;
DATE start ,end;
printf("请输入起始日期:\n");
scanf("%d%d%d",&start.year,&start.month,&start.day);
printf("请输入终止日期:\n");
scanf("%d%d%d",&end.year,&end.month,&end.day);
totalday=breakday(end)+day3(start.year,end.year)-breakday(start);
printf("相隔天数为:%d",totalday);
}
int breakday(DATE s) ///计算一年中的某日距该年1.1的天数
{
int permonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int allday=0;
int i;
for(i=1;i<s.month;i++)
{
if(runyear(s.year))
{
permonth[2]++;
allday+=permonth[i];
}
else allday+=permonth[i];
}
allday+=s.day;
return allday;
}
int runyear(int year) ///判断闰年
{
if(year%4==0 && year%100!=0 || year%400==0)
return 1;
else return 0;
}
int day3(int syear,int eyear) ///某年1.1距另一年1.1的天数
{
int i,allday=0;
for(i=syear;i<eyear;i++)
{
if(runyear(i))
allday+=366;
else allday+=365;
}
return allday;
}
typedef struct
{
int year;
int month;
int day;
}DATE;
int main()
{
int totalday;
DATE start ,end;
printf("请输入起始日期:\n");
scanf("%d%d%d",&start.year,&start.month,&start.day);
printf("请输入终止日期:\n");
scanf("%d%d%d",&end.year,&end.month,&end.day);
totalday=breakday(end)+day3(start.year,end.year)-breakday(start);
printf("相隔天数为:%d",totalday);
}
int breakday(DATE s) ///计算一年中的某日距该年1.1的天数
{
int permonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int allday=0;
int i;
for(i=1;i<s.month;i++)
{
if(runyear(s.year))
{
permonth[2]++;
allday+=permonth[i];
}
else allday+=permonth[i];
}
allday+=s.day;
return allday;
}
int runyear(int year) ///判断闰年
{
if(year%4==0 && year%100!=0 || year%400==0)
return 1;
else return 0;
}
int day3(int syear,int eyear) ///某年1.1距另一年1.1的天数
{
int i,allday=0;
for(i=syear;i<eyear;i++)
{
if(runyear(i))
allday+=366;
else allday+=365;
}
return allday;
}