「三天打魚,兩天曬網」是一個經典的 C 語言分支結構練習題。程式需根據輸入的天數,判斷該天是「出海打魚」還是「在家曬網」。規律為每 5 天一個循環:前 3 天打魚,後 2 天曬網。
利用模運算(%)求出天數在循環中的位置:
dayreminder = day % 5reminder == 0 代表第 5 天(曬網)reminder <= 3 代表第 1~3 天(打魚)reminder == 4)代表第 4 天(曬網)1 /* B3-分支-03. 三天打魚兩天曬網 */ 2 /* Main.c */ 3 /* 測試通過 */ 4 5 #include <stdio.h> 6 #include <stdlib.h> 7 8 int main() 9 { 10 int day; 11 int reminder; 12 13 scanf("%i", &day); 14 if (day <= 0 || day > 1000) 15 exit(0); 16 reminder = day % 5; 17 if (reminder == 0) 18 { 19 printf("Drying in day %i\n", day); 20 } 21 else 22 { 23 if (reminder <= 3) 24 { 25 printf("Fishing in day %i\n", day); 26 } 27 else 28 { 29 printf("Drying in day %i\n", day); 30 } 31 } 32 return 0; 33 }
day % 5 將無限大的天數映射到 0~4 的循環區間。若需擴展為「N 天打魚,M 天曬網」,只需將固定值 3、5 改為變量,並調整判斷條件為 reminder == 0 || reminder > N 即為曬網,其餘為打魚。這體現了模運算在周期性問題中的強大威力。