有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的,
我們規定他們之間的天數為兩天。
輸入形式為yyyymmdd,例如:20110412
20110422
輸出為:
11
#include
#define isyeap(x) x%100!=0&&x%4==0||x%400==0?1:0
//定義巨集判斷是否是閏年,方便計算每月天數
int dayofmonth[13]
[2]=
;//存放每月的天數
struct date }}
};int buf[
5001][
13][32
];//保留預處理的天數
intabs
(int x)
intmain()
int d1, m1, y1;
int d2, m2, y2;
while
(scanf_s
("%4d%2d%2d"
,&y1,
&m1,
&d1)
!=eof
)}
該問題中,我們把問題統一到特定日期與乙個原點日期的天數差,當要求兩個特定日期之間的天數差時,我們只需將它們與原點日期的天數差相減,便能得到兩個特定日期的天數差。
在程式輸入資料前,我們對資料進行預處理,算出所有日期與原點日期之間的天數差並儲存到乙個三維陣列中,陣列下標為日期的年月日。利用了hash的思想
buf[5001][13][32]相對耗費記憶體多,需要將其定義成全域性變數,防止棧溢位。
執行效果
解題思路為計算任意一天與原子日期間隔的天數
#include
#include
#define isyeap(x) x%100!=0&&x%4==0||x%400==0?1:0
//定義巨集判斷是否是閏年,方便計算每月天數
int dayofmonth[13]
[2]=
;//存放每月的天數
char monthname[13]
[20]=
;char weekname[7]
[20]=
;struct date }}
};int buf[
3001][
13][32
];//保留預處理的天數
計算兩個日期之間的天數 C
曆法規定,四年一閏,四百年閏,例如2000年是閏年,2100年不閏年,公曆年份是整百數的,必須是400的倍數的才是閏年,不是400的倍數的就是平年 計算兩個日期之間的天數 c 定義變數year1,month1,day1,year2,month2,day2 取出2個日期中的年 月 日 如果年相同,月也...
計算兩個日期之間的天數
問題描述 給定兩個日期,計算相差的天數。比如2010 1 1和2010 1 3相差2天。時間限制 1000 記憶體限制 65536 輸入共兩行 第一行包含三個整數startyear,startmonth,startday,分別是起始年 月 日。第二行包含三個整數endyear,endmonth,en...
C 計算任意兩個日期的天數差
萌新上路,為了完成這個實驗題,摸索了好幾天,好不容易除錯完成,基本沒啥問題了,發出來紀念一下。無論是演算法還是語句都還有很多值得改進之處,望各位不吝賜教!先說一下思路 1.計算天數差的難點在於閏年,解決閏年問題就基本沒問題。2.大體演算法是 計算每個日期到當年年底的天數 計算年與年之間的總天數差 此...