编辑代码

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