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

C語言 if else 條件判斷語句完整指南

     編輯:C 語言基礎

從順序結構到分支結構

我們之前接觸的代碼都是順序執行的——第一條語句執行完,緊接著第二條、第三條,一直到最後,這就是所謂的「順序結構」。但現實世界遠比這複雜:假設某程序限制只有成年人可用,那麼程序就必須根據用戶輸入的年齡做出判斷,並給出不同提示。這時就需要「分支結構」或「選擇結構」——根據條件決定執行哪一塊代碼。

if else 基本語法與執行流程

在 C 語言中,使用 if 和 else 關鍵字進行條件判斷。請看下面的完整示例:

#include <stdio.h>
int main() {
    int age;
    printf("請輸入你的年齡:");
    scanf("%d", &age);
    if (age >= 18) {
        printf("恭喜,你已經成年,可以使用該軟件!\n");
    } else {
        printf("抱歉,你還未成年,不宜使用該軟件!\n");
    }
    return 0;
}

可能的運行結果:

請輸入你的年齡:23↙
恭喜,你已經成年,可以使用該軟件!

請輸入你的年齡:16↙
抱歉,你還未成年,不宜使用該軟件!

代碼中 age >= 18 是判斷條件,>= 表示「大於等於」。若條件成立(age ≥ 18),執行 if 後的語句塊;否則執行 else 後的語句塊。if 意為「如果」,else 意為「否則」。

語法結構

if (判斷條件) {
    語句塊 1
} else {
    語句塊 2
}

所謂「語句塊」,就是由 { } 包圍的一個或多個語句。若語句塊內只有一條語句,大括號可省略:

if (age >= 18) printf("恭喜,你已經成年,可以使用該軟件!\n");
else printf("抱歉,你還未成年,不宜使用該軟件!\n");

實戰範例:求兩數中的較大值

#include <stdio.h>
int main() {
    int a, b, max;
    printf("輸入兩個整數:");
    scanf("%d %d", &a, &b);
    if (a > b) max = a;
    else max = b;
    printf("%d和%d的較大值是:%d\n", a, b, max);
    return 0;
}

運行結果:
輸入兩個整數:34 28↙
34和28的較大值是:34

本例借助變量 max 保存較大值,最後輸出。

僅使用 if 語句(單分支)

有時只需在條件成立時執行某操作,不成立則什麼都不做,此時可只用 if:

if (判斷條件) {
    語句塊
}

意思:條件成立執行語句塊,否則直接跳過。

只用 if 求較大值

#include <stdio.h>
int main() {
    int a, b, max;
    printf("輸入兩個整數:");
    scanf("%d %d", &a, &b);
    max = b;          // 先假設 b 最大
    if (a > b) max = a; // 若 a > b,則更新 max
    printf("%d和%d的較大值是:%d\n", a, b, max);
    return 0;
}

多個 if else 串聯(多分支)

當需要根據多個條件分別處理時,可串聯多個 else if:

if (條件1) { 語句塊1 }
else if (條件2) { 語句塊2 }
else if (條件3) { 語句塊3 }
...
else { 語句塊n }

執行邏輯:從上往下依次檢測條件,一旦某條件成立,執行對應語句塊並跳出整個結構;若所有條件都不成立,執行最後的 else 語句塊。最終只會有一個語句塊被執行。

範例:判斷輸入字符的類別

#include <stdio.h>
int main() {
    char c;
    printf("Input a character:");
    c = getchar();
    if (c < 32) printf("This is a control character\n");
    else if (c >= '0' && c <= '9') printf("This is a digit\n");
    else if (c >= 'A' && c <= 'Z') printf("This is a capital letter\n");
    else if (c >= 'a' && c <= 'z') printf("This is a small letter\n");
    else printf("This is an other character\n");
    return 0;
}

運行結果:
Input a character:e↙
This is a small letter

本例利用 ASCII 碼範圍判斷字符類別:控制字符(<32)、數字('0'~'9')、大寫字母('A'~'Z')、小寫字母('a'~'z')、其他。

if 語句嵌套與 else 配對規則

if 可以嵌套使用,例如比較兩數大小並處理相等情況:

#include <stdio.h>
int main() {
    int a, b;
    printf("Input two numbers:");
    scanf("%d %d", &a, &b);
    if (a != b) {
        if (a > b) printf("a>b\n");
        else printf("a<b\n");
    } else {
        printf("a=b\n");
    }
    return 0;
}

運行結果:
Input two numbers:12 68↙
a<b

⚠️ 關鍵規則:else 與最近的 if 配對

if (a != b)        // ①
    if (a > b) printf("a>b\n"); // ②
    else printf("a<b\n");       // ③

此處 else(③)與 if (a > b)(②)配對,而非外層的 ①。若需改變配對關係,必須加大括號明確界定。

使用 if 時的兩個注意點

  • 判斷條件必須用括號 ( ) 包起來。
  • 語句塊用 { } 包圍,} 後不需要加分號(加上也不錯,但屬多餘)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved