C 演算法模板 日期型別題目 節假日

2021-10-04 17:21:06 字數 2266 閱讀 7234

日曆有 陽曆(公曆) 和 陰曆(農曆) 之分。每年都有法定節假日,這些分成三類——雙休、陽曆節假日、陰曆節假日。

雙休

陽曆節假日

元旦:陽曆每年 1 月 1 日,放假 11 天

勞動節:陽曆每年 5 月 1 日,放假 11天

國慶節:陽曆每年 10 月 1 日,放假 33天

聖誕節:陽曆每年 12 月 25 日,放假 11 天

陰曆節假日

當節假日和雙休重合時,雙休 不延後 也 不提前,保證節假日之間不會重合。現在給你某年的所有陰曆節假日的 陽曆 日期,以及當年的 1 月 1 日是星期幾,請你計算出這一年(陽曆 1 月 1 日到 12 月 31 日)放了多少天假(包括雙休、陽曆節假日和陰曆節假日)。

第一行輸入年份 y(1900輸出乙個整數,表示當年放假的天數。

樣例輸入

2017

1 28

4 45 30

10 4

7

樣例輸出

113

關於日期,我們可以建立乙個 day 陣列,用於記錄每個月有多少天,可以幫助我們遍歷。(先不用著急 2 月份的天數不同的情況,我們可以在main中判斷是否是閏年再去修改)

一三五七八十臘,三十一天永不差。

int day[13] = ;
下一步,我們處理二月閏年的問題。

年份能整除4或百年年份能整除400的是閏年。

根據這個規律,可以對二月的天數進行修改。

if(y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
下一步,我們使用mm 陣列dd 陣列來儲存節假日的日期。

先輸入陽曆的節假日,因為是固定的,所以直接寫進陣列即可。

int mm[10] = ;

int dd[10] = ;

而陰曆的節假日每年都可能發生變化的,因此需要使用者輸入,我們將輸入寫進陣列即可。

但這裡需要注意一下,春節因為有三天,所以我們單獨拎出來處理。使用變數f記錄春節所剩天數,當f = 0的時候說明春節記錄完成。

判斷完春節後,我們需要計算週末,計算週末直接使用變數w來記錄星期幾。當 w = 8 的時候置為 1 即可。

排除週末以後,最後來判斷剩下的節假日,這很好辦了,直接匹配即可。

整個計數的迴圈如下:

while(m != 13)else if(f)else if(w == 6 || w == 7)else}}

nextday(m, d);

w = w + 1;

if(w == 8)

w = 1;

}

nextday 函式的引數是兩個引用,來修改 月 和 日。

int nextday(int &m, int &d)else

}

#includeusing namespace std;

int day[13] = ;

int mm[10] = ;

int dd[10] = ;

int nextday(int &m, int &d)else

}int main()

for(int i = 6; i < 10; i++)

scanf("%d", &w);

m = 1;

d = 1;

ans = 0;

f = 0;

while(m != 13)else if(f)else if(w == 6 || w == 7)else}}

nextday(m, d);

w = w + 1;

if(w == 8)

w = 1;

}printf("%d", ans);

return 0;

}

js 判斷日期是否節假日

判斷節假日 有陽曆的日期 也有陰曆的日期 所以要獲得兩個日期 加以判斷 這個只能用到 2020年 我發現 2021年開始 農曆就不對勁了 所以 我最終的解決方案在 最下面 這個 做乙個參考 1 function 30function e2c 38 total tmp 1921 365 math.fl...

js 公曆日期轉農曆帶節假日

首先獲取公曆節假日 var basejieri 農曆的月日 var parholiday month 1 9 month 1 0 month 1 i 9 i 0 i if basejieri.hasownproperty parholiday 呼叫方法 呼叫js方法,引數分別是公曆年 月 日 返回農...

除過法定節假日,計算截至日期的演算法

private static jsonarray getholiday else 組裝格式為為 list status 1 代表假期 2 調休工作日 return jsonarray 對所有日期陣列進行遍歷,逐個進行判斷處理 private static datetime getlimittime ...