問題是你會永遠陷入這個while循環中: while (FManOption != 3) 只有當您在“Fisherman”sub-menu內時,此循環才有意義,但您應該離開此循環,并在用戶選擇“返回主菜單”后將程序返回到其以前的狀態。 與試圖以程序控制流暗示程序狀態(例如,用戶當前是否在主菜單或sub-menu)的方式編寫代碼不同,通常更容易將程序狀態顯式存儲在變量中,例如: enum menu_state{ MENUSTATE_MAIN, MENUSTATE_FISHERMAN, MENUSTATE_FISH, MENUSTATE_TOURNAMENT_CATCH, MENUSTATE_CLOSE_TOURNAMENT};int main( void ){ [...] if (userChoice != 1) printf("Thank you for wasting my time! Have a great day!"); else { enum menu_state ms = MENUSTATE_MAIN; for (;;) //infinite loop, equivalent to while(true) { switch ( ms ) { case MENUSTATE_MAIN: switch ( mainMenu() ) { case 1: printf( "ope