04|閏年判斷
還沒完成C 或 C++ 皆可CPU 時間上限 1 秒
相關主題: C 基礎速查
C 或 C++ 皆可|CPU 時間上限 1 秒
西曆(格里曆)的閏年規則是:
- 能被 4 整除、但不能被 100 整除的年份是閏年,例如 2024
- 能被 400 整除的年份也是閏年,例如 2000
- 其他年份都是平年,例如 2023、1900
給你 T 個年份,判斷每一個是閏年還是平年。這一題所有年份都套用上面的規則,不用考慮歷史上曆法的改變。
第一行是一個整數 T(1 ≤ T ≤ 1000),代表有幾個年份。
接下來 T 行,每行一個整數 y(1 ≤ y ≤ 100,000),代表一個年份。
輸出 T 行,依照輸入的順序,每個年份輸出一行:閏年輸出 leap,平年輸出 common(全部小寫)。
輸入:
6202420231900200021002400輸出:
leapcommoncommonleapcommonleapif/else if/else的條件判斷- 判斷整除:
y % 4 == 0表示 y 是 4 的倍數 - 邏輯運算子:
&&(而且)、||(或者)、!(不是) &&的優先順序比||高;不確定的時候就加括號,讓程式更好讀- 把判斷寫成函式
is_leap(y),回傳真或假,main 只負責輸入和輸出 - C:要用
bool、true、false需要#include <stdbool.h> - C++:
bool是內建型別,不用額外 include
提示 1:把規則直接翻成條件式
「能被 4 整除而且不能被 100 整除」或者「能被 400 整除」:
(y % 4 == 0 && y % 100 != 0) || y % 400 == 0提示 2:用 if / else if 寫時,順序很重要
如果第一個判斷就是「能被 4 整除 → 閏年」,那 1900 會被誤判成閏年,因為它根本不會走到後面「能被 100 整除」的判斷。
用 if / else if 一層一層寫時,要從最特殊的情況開始判斷:先看 400,再看 100,最後看 4。
提示 3:讀入 T 筆資料的迴圈
先讀 T,再用 for 迴圈跑 T 次,每次讀一個年份、馬上輸出結果就好,不需要先把所有年份存起來。