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);
控制無限迴圈的方法
要控制無限迴圈時,可以搭配 break
與 continue
語句。
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
迴圈適用於必須至少執行一次迴圈處理的情境。善用 while
與 do while
能讓程式更靈活,也能學會用 break
、continue
控制流程,以及多重條件的進階用法,徹底掌握 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
迴圈後,也建議學習其他迴圈語法(for
、while
),並推薦進一步學習 C 語言中非常重要的「指標」概念。理解指標後,能撰寫更進階的程式。歡迎作為下一步深入學習!