公曆閏年規則(格里高利曆):
口訣:「四年一閏,百年不閏,四百年再閏」。
for (year = 1000; year <= 2000; year++) {
if (year % 4 == 0) {
if (year % 100 == 0) {
if (year % 400 == 0) leap = 1;
else leap = 0;
} else leap = 1;
} else leap = 0;
if (leap) printf("%d ", year);
}
寫法三:單一邏輯表達式(最簡潔)
效能與可讀性取捨
is_leap_year(int y) 函式。&& 高於 ||,括號可加可不加但建議保留。天文學上更精確的規則:能被 3200 整除者不為閏年;能被 172800 整除者再為閏年。但在 1000-2000 區間內不影響結果。若寫通用庫函式,可考慮加入:
#include <stdio.h>
int main(void) {
int count = 0;
for (int y = 1000; y <= 2000; y++) {
if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) {
printf("%4d%c", y, ++count % 10 == 0 ? '\n' : ' ');
}
}
if (count % 10) putchar('\n');
printf("Total leap years: %d\n", count);
return 0;
}
閏年判斷是經典邏輯練習,關鍵在於正確表達「被 4 整除且非世紀年,或被 400 整除」的布林邏輯。掌握三種寫法優劣,能靈活應對面試、教學與工程實踐的不同需求。