设计思路
先判断结束年份是否是闰年
如果是闰年则比平年多一天
如果起始时间小于结束时间则直接计算天数结果
否则就将两个输入结果调换来计算
#include <stdio.h>
int main()
{
int day,month,year;
static int sum = 0;
static int leap = 0;
static int lp = 0;
int day1,month1,year1,sum1;
printf("\n请输入起始时间,格式为:年-月-日(2021-10-23)\n");
scanf("%d,%d,%d",&year,&month,&day); // 格式为:2021-10-23
printf("\n请输入结束时间,格式为:年-月-日(2021-10-23)\n");
scanf("%d,%d,%d",&year1,&month1,&day1); // 格式为:2021-10-23
while(year < year1) // 把年份转为天数相加
{
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) //判断是否是闰年
{
leap = leap + 366; //是否为闰年
}
else{
leap = leap + 365;
}
year++;
}
switch(month) // 先计算每个月份有多少天
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
sum=sum+day; // 计算起始日期有多少天
switch(month1) // 计算每个月份有多少天
{
case 1:sum1 = 0;break;
case 2:sum1 = 31;break;
case 3:sum1 = 59;break;
case 4:sum1 = 90;break;
case 5:sum1 = 120;break;
case 6:sum1 = 151;break;
case 7:sum1 = 181;break;
case 8:sum1 = 212;break;
case 9:sum1 = 243;break;
case 10:sum1 = 273;break;
case 11:sum1 = 304;break;
case 12:sum1 = 334;break;
default:printf("data error");break;
}
if(year % 400 == 0 || (year % 4 == 0 && year % 100 !=0)) {// 判断是不是闰年
if(month1 > 2){
lp++;
printf("%d",lp);
}
}
sum1 = sum1 + day1;
leap = leap -sum + sum1 + lp;
printf("两个日期之间间隔了%d天\n",leap);
return 0;
}