C 語言 do while 迴圈完整教學:語法、範例與常見應用解析

1. 介紹

C 語言中重複處理(迴圈)的重要性

在程式設計中,重複執行相同動作的「迴圈處理」非常重要。在 C 語言裡,for 迴圈、while 迴圈,以及這次主題的 do while 迴圈都可用於重複處理。本文將聚焦於 do while 迴圈,從基本用法到實際範例進行說明。

2. do while 迴圈的基礎

do while 迴圈的基本語法

do while 迴圈能確保至少會執行一次迴圈內的處理。語法如下:

do {
    // 要執行的處理
} while (條件式);

在此語法中,會先執行 do 區塊內的處理,然後評估條件式。若條件式為 true 則再次執行迴圈,若為 false 則結束迴圈。

while 迴圈的差異

while 迴圈會先判斷條件式,僅當為 true 時才執行迴圈處理;而 do while 迴圈則是在處理後才判斷條件,因此至少會執行一次,這是兩者的最大差異。

3. do while 迴圈的適用場合

用於用戶輸入的重試

do while 迴圈非常適合用於檢查用戶輸入。例如反覆要求輸入密碼時,可以用 do while 來確認第一次輸入是否正確,若不正確則再次要求輸入,實作方式簡單有效。

用於遊戲中的重複處理

在遊戲程式中,當玩家持續選擇某行動時,就會用 do while 迴圈反覆處理。像是只要玩家選擇「繼續遊戲」,遊戲主迴圈就會持續進行,這類場景很適合使用 do while

4. do while 迴圈的程式範例

基本 do while 迴圈範例

下面是 do while 迴圈的基本用法程式範例。

#include <stdio.h>

int main() {
    int i = 0;

    do {
        printf("計數: %dn", i);
        i++;
    } while (i < 5);

    return 0;
}

在這個範例中,會先執行 do 區塊的處理,只要 i 小於 5 就會持續重複,因此會輸出 0 到 4 的數字。

用戶輸入範例

這是用戶輸入值直到滿足特定條件才結束迴圈的程式範例。

#include <stdio.h>

int main() {
    int number;

    do {
        printf("請輸入 1 到 10 之間的數字: ");
        scanf("%d", &number);
    } while (number < 1 || number > 10);

    printf("輸入的數字: %dn", number);

    return 0;
}

這段程式會在用戶輸入 1~10 範圍外的數字時,要求再次輸入,直到輸入正確為止。

5. 無限迴圈與控制

如何製作無限迴圈

使用 do while 迴圈也能實現無限迴圈。無限迴圈指的是條件式永遠為 true,會無窮反覆執行。

do {
    // 無限執行的處理
} while (1);

控制無限迴圈的方法

要控制無限迴圈時,可以搭配 breakcontinue 語句。

  • break 語句:用來跳出迴圈。
  • continue 語句:略過本次後續處理,直接進入下一次迴圈。

以下是使用 break 語句終止無限迴圈的範例:

#include <stdio.h>

int main() {
    int count = 0;

    do {
        printf("迴圈次數: %dn", count);
        count++;
        if (count > 5) {
            break;
        }
    } while (1);

    return 0;
}

這段程式中,當 count 超過 5 時就會執行 break,跳出迴圈。

6. 多重條件的 do while 迴圈

如何使用多個條件

do while 迴圈裡,可以用 &&(AND)和 ||(OR)等邏輯運算子結合多個條件。

do {
    // 要執行的處理
} while (條件1 && 條件2);

複雜條件的範例

以下範例會檢查用戶輸入是否在 1~100 之間,若不是則再次要求輸入。

#include <stdio.h>

int main() {
    int number;

    do {
        printf("請輸入 1 到 100 之間的數字: ");
        scanf("%d", &number);
    } while (number < 1 || number > 100);

    printf("輸入的數字: %dn", number);

    return 0;
}

此程式會在輸入不是 1~100 的範圍時,持續要求輸入正確數字。

7. 小結

do while 迴圈適用於必須至少執行一次迴圈處理的情境。善用 whiledo while 能讓程式更靈活,也能學會用 breakcontinue 控制流程,以及多重條件的進階用法,徹底掌握 C 語言的迴圈技巧。

8. 練習題與解答範例

題目

請撰寫一個程式,要求用戶輸入 1~10 的整數,若輸入錯誤則反覆要求輸入,正確輸入後將該數值乘以 2 並顯示。

解答範例

#include <stdio.h>

int main() {
    int number;

    do {
        printf("請輸入 1 到 10 之間的數字: ");
        scanf("%d", &number);
    } while (number < 1 || number > 10);

    printf("輸入的數字乘以 2: %dn", number * 2);

    return 0;
}

本練習題透過 do while 迴圈驗證用戶輸入,當輸入不在範圍內時會要求再次輸入。

9. 相關資訊與進階學習

了解 do while 迴圈後,也建議學習其他迴圈語法(forwhile),並推薦進一步學習 C 語言中非常重要的「指標」概念。理解指標後,能撰寫更進階的程式。歡迎作為下一步深入學習!