不多廢話,先上代碼
#include<cstdio>
//數組存儲平潤年每月天數
int month[13][2] = {{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
//判斷是否爲閏年------閏年返回true 1
bool isLeap(int year){
return (year%4==0&&year%100!=0)||(year%400==0);
}
int main(){
int time1,year1,month1,day1;
int time2,year2,month2,day2;
/*
EOF是end of file的縮寫 “!=EOF” 表示文件還沒有結束“=EOF” 表示到文件末尾了。
你在用函數讀入文件數據的時候,函數總會返回一個狀態,是讀取成功還是失敗,那麼這個狀態怎麼表示呢,所以就約定俗成定義一個標識符表示這個狀態,就有了EOF
*/
while(scanf("%d%d",&time1,&time2)!=EOF){
if(time1>time2){
int temp = time1;
time1 = time2;
time2 =temp;
}
year1=time1/10000,month1=time1%10000/100,day1=year1%100;
year2=time2/10000,month2=time2%10000/100,day2=year2%100;
int ans=1;
while(year1<year2||month1<month2||day1<day2){
day1++;
if(day1==month[month1][isLeap(year1)]+1){
month1++;
day1=1;
}
if(month1==13){
year1++;
month1=1;
}
ans++;
}
printf("%d\n",ans);
}
return 0;
}
基本思路說一哈:
首先確定輸入的兩個日期的大小關係;一個簡單的思路:令天數不斷增加直到小時間比大時間多出1(都是整型),同時必須考慮的問題是閏年與平年兩者2月存在的天數差,然後就是簡單地判斷,天數增加到滿當月時,月份+1,天數歸1;月數增加到滿當年時,年份+1,月數歸1,依次循環,直到達到要求,輸出增加的天數;當然如果年份相差較大可以直接將中間年份轉化成365、366天來簡化循環次數