1. 前言
在程式設計中,迴圈處理是提升執行效率的重要元素。C 語言提供了多種迴圈結構,其中,while 迴圈特別適用於事先無法確定重複次數的情境。本文將從基本語法到進階應用,深入解析 C 語言的 while 迴圈,並透過實際的程式碼範例,幫助您學習 while 迴圈的優勢及如何避免無窮迴圈。
2. 什麼是 C 語言的 while 迴圈?
while 迴圈是一種根據條件判斷是否繼續執行的迴圈結構。當條件為真(true)時,迴圈會持續執行;當條件為假(false)時,迴圈終止。以下程式碼展示了 while 迴圈的基本語法:
int i = 0;
while (i < 10) {
printf("目前的 i 值為: %dn", i);
i++; // 增加計數器
}
這段程式碼會在 i
小於 10 的情況下,持續輸出 i
的數值。一旦 i
達到 10,迴圈便會結束。由於 while 迴圈會根據條件動態執行,它特別適合無法預測執行次數的情境。

3. 何時應該使用 while 迴圈?
while 迴圈特別適用於事先無法確定重複次數的情境。例如,等待使用者輸入「結束」指令,或是根據外部感測器的輸入來決定是否繼續執行程式。以下程式碼範例展示了一個接收使用者輸入的應用:
int value = 0;
while (value >= 0) {
printf("請輸入數值: ");
scanf("%d", &value);
printf("您輸入的數值是: %dn", value);
}
在這個程式中,使用者輸入負數時,迴圈才會終止。這類不確定執行次數的情境,是 while 迴圈發揮作用的最佳時機。
4. while 迴圈常見錯誤
無窮迴圈(Infinite Loop)是 while 迴圈常見的錯誤之一,發生的原因通常是因為迴圈條件永遠為真,導致程式無法結束。以下是典型的無窮迴圈程式:
int i = 0;
while (i < 10) {
printf("目前的 i 值為: %dn", i);
// 忘記增加 i,導致無窮迴圈!
}
這段程式因為沒有更新 i
的值,導致 i < 10
的條件永遠為真,迴圈無法結束。無窮迴圈會增加系統負擔,因此務必要確保迴圈條件能夠在適當的時機變為假,讓程式順利終止。

5. 實用的 while 迴圈範例
以下是一些 while 迴圈的實用程式範例,展示它的靈活應用方式。
範例 1: 重複輸入直到使用者輸入「結束」
這個程式會要求使用者輸入訊息,直到輸入「結束」才會終止。
char input[50];
while (strcmp(input, "結束") != 0) {
printf("請輸入訊息(輸入「結束」來離開): ");
scanf("%s", input);
printf("您輸入的訊息是: %sn", input);
}
範例 2: 累加數值直到總和超過 100
此範例會不斷加總數值,直到總和超過 100。
int sum = 0;
int num = 1;
while (sum < 100) {
sum += num;
num++;
printf("目前總和: %dn", sum);
}
這些範例展示了 while 迴圈的靈活性,適用於處理不同條件下的重複執行需求。
6. 進階應用: 巢狀 while 迴圈
while 迴圈也可以用於較複雜的情境,例如處理二維陣列(矩陣)。以下範例使用巢狀(嵌套)while 迴圈來遍歷 3×3 的矩陣:
int i = 0, j = 0;
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
while (i < 3) {
j = 0;
while (j < 3) {
printf("%d ", matrix[i][j]);
j++;
}
printf("n");
i++;
}
此程式會輸出矩陣的所有數值,展示了如何使用巢狀 while 迴圈來處理多層結構的資料。

7. while 迴圈與其他迴圈的比較
C 語言除了 while 迴圈,還提供了其他迴圈語法,如 for 迴圈和 do-while 迴圈。以下比較它們的使用時機:
迴圈類型 | 適用情境 | 特點 |
---|---|---|
while 迴圈 | 重複次數不確定時 | 條件為真時持續執行,條件在執行前判斷 |
for 迴圈 | 重複次數已知時 | 可在一行內設定初始值、條件和更新方式 |
do-while 迴圈 | 至少執行一次 | 條件在執行後判斷,因此至少會執行一次 |
根據程式的需求,選擇適當的迴圈語法有助於提高程式的可讀性與效率。
8. 總結
本文詳細介紹了 C 語言的 while 迴圈,包括基本語法、適用場景、常見錯誤及實用範例。while 迴圈是一種靈活且強大的工具,適用於各種需要根據動態條件反覆執行的情境。透過正確使用 while 迴圈,可以提升程式的效能與可讀性,避免無窮迴圈等問題。希望本文的內容對您有所幫助,請嘗試運行這些範例,進一步理解 while 迴圈的運作方式。