【C++ 筆記】迴圈(loop) - part 6 === 目錄(Table of Contents): [TOC] --- 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! 三大迴圈式 --- ### while 迴圈 --- while 迴圈語法: ```cpp= while(condition) { statement(s); } ``` while 迴圈可以帶有條件,條件成立(True)時才會執行 `statement(s);` 的區塊。 True 時,一直執行直到 False 停止,跳出 while 迴圈。  Image Source:[While迴圈 - 維基百科,自由的百科全書](https://zh.wikipedia.org/wiki/While%E8%BF%B4%E5%9C%88) 以下是一個簡單範例: ```cpp= #include <iostream> using namespace std; int main() { int number, sum = 0, i = 1; cout << "請輸入一個正整數:"; cin >> number; // 使用 while 迴圈計算總和 while (i <= number) { sum += i; i++; } cout << "從 1 加到 " << number << " 的總和是: " << sum << endl; return 0; } ``` ### for 迴圈 --- for 迴圈語法: ```cpp= 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](https://en.wikipedia.org/wiki/For_loop) 最重要的就是練習!以下是一些練習範例: ```cpp= #include <iostream> using namespace std; int main() { int number; cout << "請輸入一個正整數:"; cin >> number; // 使用 for 迴圈列印九九乘法表 cout << "數字 " << number << " 的乘法表:" << endl; for (int i = 1; i <= 9; i++) { cout << number << " x " << i << " = " << (number * i) << endl; } return 0; } ``` 註:init 不一定是要設定全新的變數,也可設定外部變數,如下: ```cpp= #include <iostream> using namespace std; int main() { int number, i; cout << "請輸入一個正整數:"; cin >> number; // 使用 for 迴圈列印九九乘法表 cout << "數字 " << number << " 的乘法表:" << endl; for (i = 1; i <= 9; i++) { cout << number << " x " << i << " = " << (number * i) << endl; } return 0; } ``` 再來一題! ```cpp= #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 是可以省略的,但唯一要注意不能省略分號。 ***不能省略分號!*** ***不能省略分號!*** ***不能省略分號!*** 很重要所以說三次。 例: ```cpp= #include <iostream> using namespace std; int main() { int sum, i; for(i=1; i<=100; i++) { sum += i; } cout << sum; return 0; } ``` 可以寫成: ```cpp= #include <iostream> using namespace std; int main() { int sum, i=1; for(;i<=100;) { sum += i; i++; // 須注意, 拿掉 increment 後要自己加上去 } cout << sum; return 0; } ``` 而 for 迴圈的第二個運算式也是可以拿掉的,如下: ```cpp= #include <iostream> using namespace std; int main() { for (;;){ cout << 1; } return 0; } ``` 這樣子你就得到了無限循環的 1111111 ......。 如果自己沒有填寫的話,C++ 預設運算式 2(condition)為 1,也就是永遠為 True,形成一個無限迴圈。 ### do...while --- do...while 語法: ```cpp= do { statement(s); }while( condition ); ``` do...while 就是**先做後判斷**,必須先執行內部程式碼,再來進行迴圈判斷,本質上與 while 是相同的,但仍有些許差異。 生活上的應用有許多是用到 do...while的,例如:自動販賣機必須先投錢,再檢查錢幣面額;密碼輸入時,也必須要由用戶先輸入,再從後端檢查密碼是否相符等等。  Image Source:[Do while loop - Wikipedia](https://en.wikipedia.org/wiki/Do_while_loop) 以下是一個簡單範例: ```cpp= #include <iostream> using namespace std; int main() { int number, sum = 0; // 使用 do...while 迴圈進行輸入和累加 do { cout << "請輸入一個數字(輸入 0 結束):"; cin >> number; sum += number; } while (number != 0); cout << "所有輸入數字的總和是:" << sum << endl; return 0; } ``` 二大迴圈控制式 --- ### break --- 用途: 1. 中斷迴圈執行,直接跳出迴圈,無論迴圈條件是否已達到 True。 2. 中斷 switch 語句中的 case。 以下是一範例: ```cpp= #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 是中斷目前執行的迴圈,直接進行下一次的迴圈,並不會直接跳出迴圈哦。 以下是一範例: ```cpp= #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](https://www.geeksforgeeks.org/cpp-while-loop/) [C++ Loops - GeeksforGeeks](https://www.geeksforgeeks.org/cpp-loops/) [C++ For Loop](https://www.w3schools.com/cpp/cpp_for_loop.asp) [C++ 循环 | 菜鸟教程](https://www.runoob.com/cplusplus/cpp-loops.html) [C++ continue 语句 | 菜鸟教程](https://www.runoob.com/cplusplus/cpp-continue-statement.html) [C++ break 语句 | 菜鸟教程](https://www.runoob.com/cplusplus/cpp-break-statement.html) [C++ do…while 循环 | 菜鸟教程](https://www.runoob.com/cplusplus/cpp-do-while-loop.html) [C++ while 循环 | 菜鸟教程](https://www.runoob.com/cplusplus/cpp-while-loop.html) [C++ for 循环 | 菜鸟教程](https://www.runoob.com/cplusplus/cpp-for-loop.html)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.