#include <stdio.h>
int sgn=1;
void swep(int *n,int *y,int *r,int *en,int *ey,int *er)
{
int a = *n;*n = *en;*en = a;
int b = *y;*y = *ey;*ey = b;
int c = *r;*r = *er;*er = c;
sgn = 0;//如果为0,则输出负数
}
int main()
{
int n, y, r, en, ey, er, cot = 0,h=0,v=0;
scanf("%d/%d/%d", &n, &y, &r);
scanf("%d/%d/%d", &en, &ey, &er);
if (n > en)
swep(&n,&y,&r,&en,&ey,&er);//交换年月日,因为后面要用大的减小的
else if (n == en && y > ey)
swep(&n,&y,&r,&en,&ey,&er);
else if (n == en && y == ey && r > er)
swep(&n,&y,&r,&en,&ey,&er);
for (int k = n; k < en; k++)
{
if (k % 400 == 0 || (k % 4 == 0 && k % 100 != 0))
cot++;//闰年多一天
}
int s = (en - n) * 365 + cot;//年份差,换成天数
int str[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
if ((en % 400 == 0 || (en % 4 == 0 && en % 100 != 0)) && ey > 2)
h = 1;
if ((n % 400 == 0 || (n % 4 == 0 && n % 100 != 0)) && y > 2)
v = 1;
for (int q = 1; q < y; q++)
v = v + str[q-1];//将月份换成天数
for (int q = 1; q < ey; q++)
h = h + str[q-1];
s = s + (h + er) - (v + r);
if(sgn==1)
printf("%d", s);
if(sgn==0)
printf("%d", -s);
}
C语言日期交换代码,自用
最新推荐文章于 2024-06-12 22:21:16 发布