閏年規則:能被 400 整除,或被 4 整除但不能被 100 整除。封裝為函數 leap_year。
bool is_leap(int year) {
return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
}
#include <stdio.h>
void leap_year(int year) {
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
printf("%d 是閏年\n", year);
else
printf("%d 不是閏年\n", year);
}
int main() {
int year;
printf("請輸入年份:");
scanf("%d", &year);
leap_year(year);
return 0;
}
| 年份 | 結果 | 說明 |
|---|---|---|
| 2000 | 閏年 | 400 整除 |
| 1900 | 平年 | 100 整除但非 400 |
| 2024 | 閏年 | 4 整除非 100 |
| 2023 | 平年 | 4 不整除 |
year % 4 == 0 → 1900 誤判為閏年int days_in_month(int year, int month) {
static int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
if (month == 2 && is_leap(year)) return 29;
return days[month-1];
}