#include <stdio.h>//输入两个日期,计算它们相隔的天数。//判断是不是闰年
int year(int year){if((year %4==0)&&(year %100!=0)|| year %400==0)return1;elsereturn0;}//根据年份(润or平)输出月份有多少天
int month(int month,int year1){
int day =0;if((year(year1))==1){//为润年switch(month){case(1):day =31;break;case(2):day =29;break;case(3):day =31;break;case(5):day =31;break;case(7):day =31;break;case(8):day =31;break;case(10):day =31;break;case(12):day =31;break;default: day =30;}}else//为平年switch(month){case(1):day =31;break;case(2):day =28;break;case(3):day =31;break;case(5):day =31;break;case(7):day =31;break;case(8):day =31;break;case(10):day =31;break;case(12):day =31;break;default: day =30;}return day;}
int yearday(int j){
int dd =0;
int year = j;for(int i =1; i <=12; i++)
dd +=month(i,year);return dd;}
int main(){
int year1, month1, day1;
int year2, month2, day2;//dy是年差,dm是月差,dd是天差
int dy =0, dm =0, dd =0;printf("起始日期:");scanf_s("%d/%d/%d",&year1,&month1,&day1);printf("截至日期:");scanf_s("%d/%d/%d",&year2,&month2,&day2);//起始日期为year1/month1/day1//截至日期为year2/month2/day2//如果两个日期在同一年if(year1 == year2){//如果两个日期在同年同月if(month1 == month2){
dd = day2 - day1;}//如果两个日期是同两不同月else{//第一步 计算month1没过完的天数,再加上month1与month2之间空白月的总天数。
int year = year1;
dm = month2 - month1;for(dm = dm -1; dm >0; dm--){//再注释:month( month,year)函数是返还对应天数
dd +=month(month1 + dm,year);}
dd +=((month(month1,year)- day1));//第二步 加上month2的day2
dd += day2;}}//两日期不在同一年else{//计算year1与year2之间空白年之间的总天数
dy = year2 - year1;for(dy = dy -1; dy >0; dy--){
int year = year1 + dy;for(int i=1;i<=12;i++)
dd +=month(i,year);}//计算year2有多少天
int year = year2;for(int i =1; i < month2; i++){
dd +=month(i,year);}
dd += day2;//计算year1剩余多少天
year = year1;//dd1是year1过了几天
int dd1 =0;for(int i =1; i < month1; i++){
dd1 +=month(i,year);}
dd1 += day1;//将year1剩余的天数加入dd
dd +=(yearday(year1)- dd1);}printf("间距%d天", dd);}