C++ 提供 while
迴圈式,根據指定的條件式來判斷是否執行迴圈本體,語法如下所示:
while(條件式) {
陳述句一;
陳述句二;
}
如果迴圈本體只有一個陳述句,{}
可以省略不寫(但不建議);while
像是沒有起始陳述與終止陳述的 for
迴圈,常用於重複性的動作,而停止條件未知何時發生的情況。
例如一個使用者輸入介面,使用者可能輸入 10 次,也可能輸入 20 次,這時迴圈停止的時機是未知的,可以使用 while
迴圈來做這個事。
一個計算輸入成績平均的程式如下所示:
#include <iostream>
using namespace std;
int main() {
int score = 0;
int sum = 0;
int count = -1;
while(score != -1) {
count++;
sum += score;
cout << "輸入分數(-1結束):";
cin >> score;
}
cout << "平均:"
<< static_cast<double>(sum) / count
<< endl;
return 0;
}
執行結果:
輸入分數(-1 結束):10
輸入分數(-1 結束):20
輸入分數(-1 結束):30
輸入分數(-1 結束):40
輸入分數(-1 結束):50
輸入分數(-1 結束):-1
平均:30
在這個程式中,使用者的輸入次數是未知的,使用 while
迴圈來判斷使用者的輸入是否為 -1,以作為迴圈執行的條件。
while
迴圈也稱為前測式迴圈,因為在迴圈執行前就會進行條件判斷,而 do while
稱為後測式迴圈,它會先執行迴圈本體,然後再進行條件判斷,do while
的語法如下所示:
do {
陳述句一;
陳述句二;
....
} while(條件式);
注意 do while
是以分號(;
)作為結束,這個很常被忽略;由於 do while
會先執行迴圈,通常用於進行一些初始化或介面溝通的動作,例如下面這個程式:
#include <iostream>
using namespace std;
int main() {
int input = 0;
bool replay = false;
do {
cout << "輸入整數值:";
cin >> input;
cout << "輸入數為奇數?" << (input % 2 ? 'Y': 'N') << endl;
cout << "繼續(1:繼續 0:結束)?";
cin >> replay;
} while(replay);
return 0;
}
執行結果:
輸入整數值:11
輸入數為奇數?Y
繼續(1:繼續 0:結束)?0