C 計算任意兩個日期的天數差

2021-10-03 20:00:07 字數 2385 閱讀 6670

萌新上路,為了完成這個實驗題,摸索了好幾天,好不容易除錯完成,基本沒啥問題了,發出來紀念一下。無論是演算法還是語句都還有很多值得改進之處,望各位不吝賜教!

先說一下思路:

1.計算天數差的難點在於閏年,解決閏年問題就基本沒問題。

2.大體演算法是:計算每個日期到當年年底的天數》計算年與年之間的總天數差(此處認為計算年初到年初或年末到年末都行)>用總天數差加上兩個日期到當年年底天數之差即為結果(用比例線段模擬可得到該演算法)。

以下是實現演算法的兩個主要函式:

int

toey

(int y,

int m,

int d)

//計算到年底的天數;if

(i ==

1)month[1]

=29;for

(m -=1

; m <=

11; m++

)tm +

= month[m]

; tey = tm - d;

return tey;

}intfn(

int y1,

int y2,

int m2,

int d2)

//計算年份總天數差

else

if(y1 == y2)

return0;

else

count = big - small;

for(num =

1; num <= count; num++

)td +

=365

;for

(small; small <= big; small++)if

((year

(y2)==1

)&&((m2 <2)

||((m2 ==2)

&&(d2 <29)

)))td -=1

;return td;

}

合法性判斷主要有兩點:

1.大小月和天數的匹配;

2.平閏年2月天數。

因為是任意年,故不規定年份合法性。

以下是**:

int

year

(int y)

//判斷閏年

intlegal

(int y,

int m,

int d)

//檢測合法性

主函式比較簡單,大部分都是函式呼叫和輸入輸出:

int

main()

system

("pause");

return0;

}

總體**就是上面這樣,下面是完整**:

#include

#include

using

namespace std;

int i;

//標誌是否閏年

int j=1;

//標誌是否合法

intyear

(int y)

//判斷閏年

intlegal

(int y,

int m,

int d)

//檢測合法性

inttoey

(int y,

int m,

int d)

//計算到年底的天數;if

(i ==

1)month[1]

=29;for

(m -=1

; m <=

11; m++

)tm +

= month[m]

; tey = tm - d;

return tey;

}intfn(

int y1,

int y2,

int m2,

int d2)

//計算年份總天數差

else

if(y1 == y2)

return0;

else

count = big - small;

for(num =

1; num <= count; num++

)td +

=365

;for

(small; small <= big; small++)if

((year

(y2)==1

)&&((m2 <2)

||((m2 ==2)

&&(d2 <29)

)))td -=1

;return td;

}int

main()

system

("pause");

return0;

}

C 計算任意兩個日期之間的天數

c 寫的乙個計算兩個日期之間天數的小程式 cpp view plain copy include include struct tagdate 設定日期 void setdate int y,int m,int d,tagdate date 是否閏年 int isleapyear int year ...

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

有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的,我們規定他們之間的天數為兩天。輸入形式為yyyymmdd,例如 20110412 20110422 輸出為 11 include define isyeap x x 100 0 x 4 0 x 400 0?1 0 定義巨集判斷是否是閏年,方便計...

php計算任意兩個日期之間的天數

php計算任意兩個日期之間的天數 基本思想,算術減法 cur date 2009 04 11 last date 2008 12 20 date dist 0000 03 21 間隔大約3個月21天 116天 create function function date distance last d...