#includeint main() { int year, leap = 1; printf("\t\t\t判斷 0~3000 之間的閏年\n"); printf("請輸入 0~3000 之間的年份\n"); flag: scanf("%d", &year); if (year > 0 && year <= 3000) { if (year % 4 != 0) leap = 0; else if (year % 100 != 0) leap = 1; if (year % 400 != 0) leap = 0; if (leap) printf("%d is ", year); else printf("%d is not ", year); printf("a leap year.\n"); goto flag; } else { printf("輸入錯誤,請輸入 0~3000 之間的年份\n"); goto flag; } return 0; }
year%4!=0 → 非閏年。year%100!=0 → 普通世紀年,能被 4 整除即閏年。year%400!=0 → 世紀年能被 400 整除才閏年。順序執行自動覆蓋 leap,最終結果正確。
flag: 標籤配合 goto flag 形成無限輸入迴圈。教學示範用,實務建議改用 while(1)。