猜數字是 C 語言初學者最經典的練習專案之一。程式隨機生成 0~100 之間的整數,玩家反覆輸入猜測,程式提示「大了」「小了」直到猜中。本文提供完整、可直接編譯執行的原始碼,並解析關鍵邏輯。
#include#include #include void print_menu() { printf("**********************\n"); printf("******* 1.start ******\n"); printf("******* 0. exit ******\n"); printf("**********************\n"); } int main() { int input = 1; printf("歡迎使用猜數字遊戲\n"); while (input) { print_menu(); printf("請選擇> "); scanf("%d", &input); switch (input) { case 1: { int n = 0, ch = 0; srand((unsigned int)time(NULL)); // 以當前時間為種子 n = rand() % 101; // 產生 0~100 隨機數 while (1) { printf("請猜一個(0-100)之間的數\n"); scanf("%d", &ch); if (ch > n) { printf("你猜大了\n"); } else if (ch < n) { printf("你猜小了\n"); } else { printf("恭喜你,猜對了\n"); break; } } break; } default: printf("遊戲退出\n"); break; } } system("pause"); return 0; }
srand() / rand()srand((unsigned)time(NULL)):以當前時間秒數為種子,確保每次執行序列不同。rand() % 101:取模得到 0~100 範圍整數。while(input)讓玩家可連續遊玩多局,輸入 0 結束。
if-else 結構三向分支:大於、小於、等於,猜中時 break 跳出內層迴圈。
scanf 回傳值未檢查,非數字輸入會導致無限迴圈。建議檢查回傳值或使用 fgets+sscanf。system("pause") 僅限 Windows。Linux/macOS 可改用 getchar() 組合。time(NULL) 可能相同。進階可結合 clock() 或 getpid()。