#include<stdio.h>
#include<stdlib.h>
int func1(int flag,int mon);
int func2(int mon, int day, int year);
int check(int in, int flag);
int main()
{
system("color F0");
int year1,year2,mon1,mon2,day1,day2,flag,i,p,n=0,m=0;
void input(int *year,int *mon,int *day);
void change(int* x, int* y);
while (1)
{
printf("请输入时间1:\n");
input(&year1, &mon1, &day1);
printf("请输入时间2:\n");
input(&year2, &mon2, &day2);
p = year2 - year1;
i = p;
while (p >= 2)
{
p = p - 1;
flag = year1 + p;
if((flag % 4 == 0) && (flag % 100 != 0))
n++;
else
m++;
}
year1 = (year1 % 4 == 0) && ( year1 % 100 != 0) ? 366 : 365;
year2 = (year2 % 4 == 0) && (year2 % 100 != 0) ? 366 : 365;
flag = func2(mon2, day2, year2) - func2(mon1, day1, year1);
if (i == 0)
printf("日期相差%d天\n\n", flag);
else if (i == 1)
printf("日期相差%d天\n\n", flag + year1);
else
printf("日期相差%d天\n\n", flag + year1 + n * 366 + m * 365);
}
return 0;
}
void input(int* year, int* mon, int* day)
{
int flag;
printf("年:");
scanf("%d", year);
printf("月:");
scanf("%d", mon);
flag = (*year % 4 == 0) && (*year % 100 != 0) ? 1 : 0;
flag = func1(flag, *mon);
printf("日:");
scanf("%d", day);
*day = check(*day, flag);
}
void change(int* x, int* y)
{
int z;
z = *y;
*y = *x;
*x = z;
}
int func1(int flag,int mon)
{
int a, b;
a = (mon == 2) ? 1 : 0;
b = (mon == 1) || (mon == 3) || (mon == 5) || (mon == 7) || (mon == 8) || (mon == 10) || (mon == 12) ? 1 : 0;
switch (a * 4 + b * 2 + flag)
{
case 0:
case 1:return 30; break;
case 2:
case 3:return 31; break;
case 4:return 29; break;
case 5:return 28; break;
}
}
int func2(int mon, int day, int year)
{
int flag,num=0;
if (year == 365){
for (flag = 1; flag < mon; flag++)
{
num = func1(0, flag) + num;
}
}
else{
for (flag = 1; flag < mon; flag++)
{
num = func1(1, flag) + num;
}
}
return num + day;
}
int check(int in, int flag)
{
if ((in <= flag) && (in >= 0))
return in;
else{
printf("输入有误,请重新输入:");
scanf("%d", &in);
return check(in,flag);
}
}