c 計算兩個日期之間的天數差

2021-10-03 02:57:33 字數 1822 閱讀 5756

有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的,

我們規定他們之間的天數為兩天。

輸入形式為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.大體演算法是 計算每個日期到當年年底的天數 計算年與年之間的總天數差 此...