首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言快速入門(五):循環猜測直到猜中——else if 多條件分支

     編輯:關於C語言

目標

實現「反覆輸入 → 範圍校驗 → 比較大小 → 提示大了/小了/猜中 → 猜中退出」的完整遊戲循環,引入 else if 多條件分支結構。

完整代碼

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 產生 1-500 隨機數
int get_number() {
    srand((int)time(0));
    return rand() % 499 + 1;
}

int main() {
    int mynum, guessnum = get_number();
    
    while (1) { // 外層:遊戲主循環
        // 內層:輸入校驗循環
        while (1) {
            printf("你好,請輸入一個數字: ");
            scanf("%d", &mynum);
            if (mynum > 500 || mynum < 1)
                printf("數字僅限於 1-500 之間\n");
            else {
                printf("\n你輸入的數字是: %d\n", mynum);
                break; // 合法輸入,跳出校驗循環
            }
        }
        
        // else if 多條件分支比較
        if (mynum > guessnum)
            printf("數字大了!\n");
        else if (mynum < guessnum)
            printf("數字小了!\n");
        else {
            printf("祝賀您,您猜中了!\n");
            break; // 猜中,結束遊戲
        }
    }
    return 0;
}

運行演示

$ ./myguess
你好,請輸入一個數字: 55
你輸入的數字是: 55
數字小了!
你好,請輸入一個數字: 280
你輸入的數字是: 280
數字小了!
...
你好,請輸入一個數字: 430
你輸入的數字是: 430
祝賀您,您猜中了!

else if 結構深度解析

語法形式

if (條件1) { ... }
else if (條件2) { ... }
else if (條件3) { ... }
...
else { ... } // 可選:以上條件均不滿足時執行

執行機制

  • 自上而下順序求值條件
  • 首個為真(非零)的分支執行,隨後跳過其餘分支
  • 所有條件均假時執行 else 塊(若存在)

等價邏輯

// 等價於嵌套 if-else
if (條件1) { ... }
else {
    if (條件2) { ... }
    else {
        if (條件3) { ... }
        else { ... }
    }
}

else if 扁平化結構,提升可讀性,避免「箭頭型」代碼。

隨機數生成細節

  • srand(time(0)) 以當前時間秒數為種子,每次運行序列不同
  • rand() % 499 + 1 產生 1-499,配合 +1 得 1-500(原代碼 499+1=500)
  • 注意:srand 應僅調用一次,放在循環外

雙層循環設計意圖

層級職責退出條件
內層 while(1)輸入校驗輸入合法 break
外層 while(1)遊戲主流程猜中 break

總結

通過 else if 實現多路互斥分支,雙層循環分離「輸入合法性」與「遊戲邏輯」,代碼結構清晰。下一步可加入嘗試次數統計、歷史記錄、難度選擇等功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved