细节要求:
日期1:起始日期
日期2:最终日期
需要考虑:
若两个日期在同一年,则日期2-日期1
若两个日期不在同一年,则需要考虑闰年的额外天数
代码参考:
#include <stdio.h>
int main(){
int years,monthst,dayst;
int yearend,monthend,daystend;
int total=0;
int i;
printf("请输入开始日期:");
scanf("%d/%d/%d",&years,&monthst,&dayst);
printf("请输入结束日期:");
scanf("%d/%d/%d",&yearend,&monthend,&daystend);
total = (yearend - years)*365;//相差日期的天数
total -= days(years,monthst,dayst);//开始日期
total += days(yearend,monthend,daystend);//结束日期
while(years != yearend)
{
if(years%4 == 0 && years%100 != 0 || years%400 == 0)//判断是不是润牛
total+=1;
if(total<=0)//如果开始日期大于结束日期则天数相差小于等于0
years--;
else
years++;
}
total<=0?total-=1:total;
printf("%d年%d月%d日与%d年%d月%d日相差了%d天\n",years,monthst,dayst,yearend,monthend,daystend,total);
return 0;
}
days(int year,int month,int day){
int sum = 0;
int i;
int months[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
for(i = 0; i < month; i++)
sum += months[i];
sum += day;
if((year%4 == 0 && year%100 != 0 || year%400 == 0) && month >= 3)
sum += 1;
return sum;
}