輕鬆掌握C++ while循環:與for循環的區別及應用

在編程中,我們經常需要重複執行某段代碼。比如打印1到100的數字,或者計算1到100的和。如果手動重複寫代碼,不僅繁瑣還容易出錯,這時候就需要循環結構來幫忙。C++提供了兩種常用的循環:while循環和for循環。本文將重點講解while循環,包括它的用法、與for循環的區別,以及實際應用場景。

一、爲什麼需要循環?

假設我們要打印1到10的數字,如果不用循環,代碼會是這樣:

cout << 1 << endl;
cout << 2 << endl;
cout << 3 << endl;
// ... 一直寫到10

這樣顯然很麻煩,而且如果要打印1到1000,代碼會更長。循環的作用就是重複執行一段代碼,直到滿足某個條件才停止。

二、while循環的基本語法

while循環的核心邏輯是:先判斷條件,如果條件成立,就執行循環體(大括號內的代碼),執行完後再次判斷條件,直到條件不成立爲止

語法格式:

while (條件表達式) {
    // 循環體:要重複執行的代碼
}

示例1:打印1到10

#include <iostream>
using namespace std;

int main() {
    int i = 1; // 初始化計數器
    while (i <= 10) { // 條件:i是否小於等於10
        cout << "第" << i << "次循環:數字是" << i << endl;
        i++; // 更新計數器(關鍵!否則會一直滿足條件,變成死循環)
    }
    return 0;
}

執行過程拆解:

  1. 初始化i = 1,表示從數字1開始。
  2. 判斷條件:檢查i <= 10是否成立。第一次i=1,條件成立,執行循環體。
  3. 執行循環體:打印i的值,然後i自增1(i=2)。
  4. 重複判斷:此時i=2,條件2 <= 10成立,再次執行循環體,直到i=11時,條件11 <= 10不成立,循環結束。

示例2:計算1到10的和

int main() {
    int sum = 0; // 總和初始化爲0
    int i = 1;
    while (i <= 10) {
        sum += i; // 等價於 sum = sum + i
        i++;
    }
    cout << "1到10的和是:" << sum << endl; // 輸出55
    return 0;
}

三、while循環的關鍵:避免死循環

while循環的最大“陷阱”是死循環——條件永遠成立,導致循環體永遠執行。

錯誤示例(忘記更新i):

int i = 1;
while (i <= 10) { // 條件永遠成立(i不會變化)
    cout << i << endl;
    // 沒有i++,i永遠是1,循環無法結束!
}

修正:在循環體中必須有能讓條件變爲“假”的操作(比如i++)。

四、while循環 vs for循環:誰更適合?

對比項 while循環 for循環
語法結構 while(條件) for(初始化; 條件; 更新)
適用場景 條件持續變化(次數不確定) 已知循環次數(次數確定)
典型場景 用戶輸入驗證(直到輸入正確)、處理文件(直到文件結束) 遍歷數組(已知元素數量)、循環固定次數(如1-100)

示例:用戶輸入驗證(用while更合適)

如果要讓用戶輸入一個1-100的數字,直到輸入正確才停止:

#include <iostream>
using namespace std;

int main() {
    int num;
    cout << "請輸入1-100的數字:";
    cin >> num;

    // while循環:條件“num是否在1-100之間”,直到用戶輸入正確
    while (num < 1 || num > 100) { 
        cout << "輸入錯誤!請重新輸入:";
        cin >> num; // 更新用戶輸入的數字
    }

    cout << "輸入正確!數字是:" << num << endl;
    return 0;
}

這裏while循環的條件(num是否在1-100之間)無法確定循環次數,只能用while來持續檢查。

示例:遍歷數組(用for更合適)

如果要打印數組的所有元素(已知數組長度),用for循環更簡潔:

int arr[] = {1, 2, 3, 4, 5};
int len = 5;
for (int i = 0; i < len; i++) {
    cout << arr[i] << endl;
}

for循環的初始化、條件判斷、更新變量可以在一行完成,適合固定次數的場景。

五、while循環的實際應用場景

1. 處理不確定次數的任務

比如讀取用戶輸入的多個數字,直到用戶輸入“-1”結束:

int n;
cout << "請輸入數字(輸入-1結束):";
cin >> n;

while (n != -1) {
    cout << "你輸入的是:" << n << endl;
    cout << "繼續輸入(-1結束):";
    cin >> n;
}
cout << "程序結束!" << endl;

2. 重複執行直到條件滿足

比如猜數字遊戲,直到猜對爲止:

int secret = 42;
int guess;
while (true) { // 死循環,直到猜對才break
    cout << "猜一個數字:";
    cin >> guess;
    if (guess == secret) {
        cout << "猜對了!" << endl;
        break; // 跳出循環
    } else if (guess > secret) {
        cout << "太大了!" << endl;
    } else {
        cout << "太小了!" << endl;
    }
}

這裏while(true)表示“無限循環”,但通過break主動退出,這也是while循環的靈活應用。

六、總結

  • while循環:適合條件不確定、需要持續檢查的場景(如用戶輸入、文件讀取),語法是while(條件) { 循環體; }
  • for循環:適合已知循環次數的場景(如遍歷數組、固定次數操作),語法更緊湊。
  • 核心區別while先判斷條件再執行,for的初始化、條件、更新可合併寫,按需選擇。

記住:無論用哪種循環,一定要確保條件能最終變爲“假”,避免死循環!多練習簡單示例(如打印數字、計算和),就能快速掌握~

小夜