日曆有 陽曆(公曆) 和 陰曆(農曆) 之分。每年都有法定節假日,這些分成三類——雙休、陽曆節假日、陰曆節假日。雙休
陽曆節假日
元旦:陽曆每年 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 即可。
排除週末以後,最後來判斷剩下的節假日,這很好辦了,直接匹配即可。
整個計數的迴圈如下:
nextday 函式的引數是兩個引用,來修改 月 和 日。while(m != 13)else if(f)else if(w == 6 || w == 7)else}}
nextday(m, d);
w = w + 1;
if(w == 8)
w = 1;
}
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 ...