第1个回答 2018-03-20
计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减。
要考虑闰年的情况,判断闰年的口诀:4年一闰,100年不闰,400年再闰。
((year
%
4
==
0
&&
year
%
100
!=
0)
||
year
%
400
==
0)
网上找了一个(偷懒=
=!),修改下如下:
#include
<stdio.h>
int
sum(int
y,int
m,int
d)
{
unsigned
char
x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int
i,s=0;
for(i=1;i<y;i++)
if(i%4==0
&&
i%100!=0
||
i%400==0)
s+=366;//闰年
else
s+=365;//平年
if(y%4==0
&&
y%100!=0
||
y%400==0)
x[2]=29;
for(i=1;i<m;i++)
s+=x[i];//整月的天数
s+=d;//日的天数
return
s;//返回总天数,相对公元1年
}
void
main()
{
unsigned
char
y1,m1,d1,y2,m2,d2;
int
s1,s2;
printf("输入第一个年
月
日:");
scanf("%d
%d
%d",&y1,&m1,&d1);
printf("输入第二个年
月
日:");
scanf("%d
%d
%d",&y2,&m2,&d2);
s1=sum(y1,m1,d1);
s2=sum(y2,m2,d2);
if
(s1
>
s2)
printf("相差天数:%ld\n",s1-s2);
else
printf("相差天数:%ld\n",s2-s1);
}
以上代码VC6编译测试通过。