0 && year <= 3000) {
if (year % 4 != 0) leap = 0;
else if (year % 100 != 0) leap = 1;
if (year % 400 != 0) leap = 0;
printf("%d %s a leap year.\n", year, leap ? "is" : "is not");
} else {
printf("輸入錯誤,");
}
goto flag;
return 0;
}
%4 != 0 → 平年。%100 != 0 → 閏年。%400 == 0 才閏年,故最後 if (year%400!=0) leap=0 覆蓋前面結果。while(1) 或 do-while 結構化循環。leap = (year%4==0 && year%100!=0) || (year%400==0);scanf 返回值,處理非數字輸入。 3000) { puts("範圍 1-3000"); continue; }
int leap = (year%4==0 && year%100!=0) || (year%400==0);
printf("%d %s leap year.\n", year, leap ? "is" : "is not");
}
goto 還有其歷史場景(錯誤處理跳轉),但現代 C 編程強烈建議用結構化控制流。閏年邏輯單一表達式最清晰,易維護、易優化。