设计思路
1、比较起始和结束的年份大小,起始年是否大于结束年,如果起始时间大于输入的结束时间,则把两个时间(年月日)互换值,再计算两个时间相差的天数。
2、判断是否起始时间小于结束时间,直接计算两个时间相差的天数。
3、判断是否为闰年(闰年是366天,平年是365天)。
流程图如下
代码如下
#includeint 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; }



