【C++ 筆記】迴圈(loop) - part 6
很感謝你點進來這篇文章。
你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧!
三大迴圈式
while 迴圈
while 迴圈語法:
1 2 3 4
| while(condition) { statement(s); }
|
while 迴圈可以帶有條件,條件成立(True)時才會執行 statement(s); 的區塊。
True 時,一直執行直到 False 停止,跳出 while 迴圈。

Image Source:While迴圈 - 維基百科,自由的百科全書
以下是一個簡單範例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include <iostream> using namespace std;
int main() { int number, sum = 0, i = 1;
cout << "請輸入一個正整數:"; cin >> number;
while (i <= number) { sum += i; i++; }
cout << "從 1 加到 " << number << " 的總和是: " << sum << endl;
return 0; }
|
for 迴圈
for 迴圈語法:
1 2 3 4
| for ( init; condition; increment ) { statement(s); }
|
如同大多數程式語言一樣,for 迴圈就是做類似等差數列的遞增遞減。
在 C++ 中,init 被認定為設定初始值,通常設定為 i, j, k ….,以 i 為例,init 處會設定成 i = 0。
condition:與 while 迴圈一樣,條件必須是 True 才能執行迴圈,直到條件 False 為止。
increment:針對初始值 init 所需設定的增加量,比如說 i++、i*2 等等,這會在每一次迴圈執行完後,再次執行此語法。

Image Source:For loop - Wikipedia
最重要的就是練習!以下是一些練習範例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <iostream> using namespace std;
int main() { int number;
cout << "請輸入一個正整數:"; cin >> number;
cout << "數字 " << number << " 的乘法表:" << endl; for (int i = 1; i <= 9; i++) { cout << number << " x " << i << " = " << (number * i) << endl; }
return 0; }
|
註:init 不一定是要設定全新的變數,也可設定外部變數,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <iostream> using namespace std;
int main() { int number, i;
cout << "請輸入一個正整數:"; cin >> number;
cout << "數字 " << number << " 的乘法表:" << endl; for (i = 1; i <= 9; i++) { cout << number << " x " << i << " = " << (number * i) << endl; }
return 0; }
|
再來一題!
1 2 3 4 5 6 7 8 9 10 11 12
| #include <iostream> using namespace std; int main () { for( int a = 10; a < 20; a = a + 1 ) { cout << "a 的值:" << a << endl; } return 0; }
|
Source:https://www.runoob.com/cplusplus/cpp-for-loop.html
補充:三個運算式可省略
for 迴圈當中的 init、condition、increment 是可以省略的,但唯一要注意不能省略分號。
不能省略分號!
不能省略分號!
不能省略分號!
很重要所以說三次。
例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include <iostream>
using namespace std;
int main() { int sum, i; for(i=1; i<=100; i++) { sum += i; } cout << sum;
return 0; }
|
可以寫成:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #include <iostream>
using namespace std;
int main() { int sum, i=1; for(;i<=100;) { sum += i; i++; } cout << sum;
return 0; }
|
而 for 迴圈的第二個運算式也是可以拿掉的,如下:
1 2 3 4 5 6 7 8 9 10 11 12
| #include <iostream>
using namespace std;
int main() { for (;;){ cout << 1; }
return 0; }
|
這樣子你就得到了無限循環的 1111111 ……。
如果自己沒有填寫的話,C++ 預設運算式 2(condition)為 1,也就是永遠為 True,形成一個無限迴圈。
do…while
do…while 語法:
1 2 3 4 5
| do { statement(s);
}while( condition );
|
do…while 就是先做後判斷,必須先執行內部程式碼,再來進行迴圈判斷,本質上與 while 是相同的,但仍有些許差異。
生活上的應用有許多是用到 do…while的,例如:自動販賣機必須先投錢,再檢查錢幣面額;密碼輸入時,也必須要由用戶先輸入,再從後端檢查密碼是否相符等等。

Image Source:Do while loop - Wikipedia
以下是一個簡單範例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <iostream> using namespace std;
int main() { int number, sum = 0;
do { cout << "請輸入一個數字(輸入 0 結束):"; cin >> number; sum += number; } while (number != 0);
cout << "所有輸入數字的總和是:" << sum << endl;
return 0; }
|
二大迴圈控制式
break
用途:
- 中斷迴圈執行,直接跳出迴圈,無論迴圈條件是否已達到 True。
- 中斷 switch 語句中的 case。
以下是一範例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include <iostream> using namespace std;
int main() { int number;
for (int i = 1; i <= 5; i++) { cout << "請輸入一個正整數(輸入負數結束):"; cin >> number;
if (number < 0) { cout << "輸入了負數,程式提前結束" << endl; break; }
cout << "第 " << i << " 次輸入的數字是:" << number << endl; }
cout << "程式執行完畢" << endl;
return 0; }
|
continue
與 break 相似但不同,continue 是中斷目前執行的迴圈,直接進行下一次的迴圈,並不會直接跳出迴圈哦。
以下是一範例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include <iostream> using namespace std;
int main() { int number;
cout << "請輸入一個正整數範圍(輸出範圍內的奇數):"; cin >> number;
cout << "範圍內的奇數為:" << endl; for (int i = 1; i <= number; i++) { if (i % 2 == 0) { continue; } cout << i << " "; }
cout << endl << "程式執行完畢" << endl; return 0; }
|
總結
本文主要介紹 C++ 中的三種迴圈結構:while 迴圈、for 迴圈、do…while 迴圈。
三大迴圈式
while 迴圈
語法:while(condition) { statement(s); }
當 condition 為 1,也就是 True 時才會執行 statement(s),持續執行直到 condition = 0 為止,也就是 False。
範例:計算從 1 到輸入正整數的總和。
for 迴圈
語法:for (init; condition; increment) { statement(s); }
init 設定初始值,可視為等差數列的首項 a1;condition 即為迴圈執行的條件,同 while 解釋;increment 設定欲在每次迴圈時增加的值,可視為等差數列的公差 d。
範例:列印九九乘法表,並可省略初始值、條件或增量,但必須保留分號。
do…while 迴圈
語法:do { statement(s); } while(condition);
:::success
注意這個結構要在最後面加上分號。
:::
先執行一次內部程式碼,再檢查條件,確保至少執行一次。其餘同 while。
示例:用於累加輸入的數字,直到輸入零為止。
二大迴圈控制式
break
用於中斷迴圈的執行,無論條件是否達成。
範例:當用戶輸入負數時,提前結束輸入迴圈。
continue
用於跳過當前迴圈的剩餘部分,直接進入下一次迴圈。
示例:在範圍內輸出奇數,偶數則跳過。
參考資料
C++ While Loop - GeeksforGeeks
C++ Loops - GeeksforGeeks
C++ For Loop
C++ 循环 | 菜鸟教程
C++ continue 语句 | 菜鸟教程
C++ break 语句 | 菜鸟教程
C++ do…while 循环 | 菜鸟教程
C++ while 循环 | 菜鸟教程
C++ for 循环 | 菜鸟教程