# 迴圈 ## 題目: 請輸出1~100的數字。 ```cpp #include <bits/stdc++.h> // 引入所有標準庫 using namespace std; // 省略 std:: 的使用 int main() { cout <<"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 57 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 75 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100" return 0; // 程序正常結束 } ``` 不可能這樣打吧????? 沒錯!這樣手動輸出 1 到 100 是不合理的,也不符合程式設計的靈活性。這就是為什麼程式語言中有「**迴圈**」的概念。 在 C++ 中,迴圈能夠讓我們簡潔地重複執行一段程式碼,而不需要手動輸出每一個數字。我們可以用 `for` 迴圈來完成這個工作。 ## `for`迴圈的寫法 ```cpp for(int i=0;i<n;i++){ //程式碼放這裡 } ``` 在寫`for`迴圈時他**小括號**裡面的分為三個部分,用分號`;`隔開 ```cpp for(第一部分;第二部分;第三部分){要重複執行的程式} ``` | 部分 | 作用與說明 | 範例 | |----------|----------------------------------------------------------|--------------------------------| | 第一部分。初始化 | 設定迴圈變數的初始值。這段程式碼只在**迴圈開始時**執行一次。 | `int i = 0;` | | 第二部分。條件 | 每次迴圈執行前檢查的**條件**。若條件為 `true`,則執行迴圈;若為 `false`,則結束迴圈。 | `i <= 100;` | | 第三部分。更新 | 每次執行完迴圈內容後,都會執行一次這邊的內容。通常是自增 (`i++`) 或自減 (`i--`) 操作。 | `i++`(每次迴圈後將 `i` 加 1) | ## 舉例 ### 使用 `for` 迴圈來輸出 1 到 100 的數字 讓我們改寫程式碼,讓它更簡潔並且更有彈性: ```cpp #include <iostream> using namespace std; int main() { for (int i = 1; i <= 100; i++) { cout << i << " "; } return 0; } ``` ### 程式碼說明: 1. **`for` 迴圈**: - `int i = 1;`:將變數 `i` 初始化為 1。 - `i <= 100;`:當 `i` 小於或等於 100 時,繼續執行迴圈。 - `i++`:每次執行完迴圈內的程式碼後,將 `i` 增加 1。 2. **`cout << i << " ";`**:在每次迴圈中將目前的數字 `i` 輸出,並以空格分隔。 程式碼執行順序: - 定義i=1 - 檢查i是否小於100(是) - 執行cout << i << " "; - 檢查i是否小於100(是) - 執行cout << i << " "; - i++(i等於本身值+1) - 檢查i是否小於100(是) - 執行cout << i << " "; - i++(i等於本身值+1) - 檢查i是否小於100(是) - 執行cout << i << " "; - i++(i等於本身值+1) - 檢查i是否小於100(是) - 執行cout << i << " "; - i++(i等於本身值+1) - 檢查i是否小於100(是) - 執行cout << i << " "; - i++(i等於本身值+1) - 檢查i是否小於100(是) - 執行cout << i << " "; - i++(i等於本身值+1) ## `while` 迴圈 ## 題目: 請輸出某數的大於1000的最小倍數 像是7大於1000最小的倍數是1001 5大於1000最小倍數是1005 11大於1000最小倍數是???? 如果今天不是教迴圈,其實你可以這樣寫。 ```cpp #include <bits/stdc++.h> // 引入所有標準庫 using namespace std; int main() { int x; //定義x cin >> x; //毒入x cout << 1000+(x-1000%x);//輸出1000加上x減掉x除以1000的餘數 return 0; } ``` 但我們今天是教迴圈不是教四則運算,所以你需要用`while`迴圈來解決這問題 `while`迴圈是指在**滿足條件**的情況下會**重複執行**包含在`{}`裡面的程式 ### `while` 迴圈的寫法 `while` 迴圈的基本語法如下: ```cpp while (條件) { // 迴圈內的程式碼 } ``` - **條件**:每次執行前都會檢查這個條件,若條件為 `true`,則繼續執行迴圈內容;若條件為 `false`,則結束迴圈。 --- ### 使用 `while` 迴圈來找大於 1000 的最小倍數 假設我們希望找出某個數字的最小倍數,且這個倍數必須大於 1000。這樣的問題非常適合使用 `while` 迴圈,因為我們不知道需要進行幾次相乘才能達成條件,所以無法直接用 `for` 迴圈設定固定的次數。 例如,如果輸入數字為 7,我們希望得到的答案是 1001,因為 7 × 143 = 1001 是大於 1000 的最小倍數。 ```cpp #include <bits/stdc++.h> // 引入所有標準庫 using namespace std; int main() { int x; // 定義 x cin >> x; // 輸入 x int gino = x; // 初始化 gino 為 x // 使用 while 迴圈,直到找到大於 1000 的最小倍數 while (gino <= 1000) { gino += x; // 每次將 gino 增加 x,形成 x 的倍數 } cout << "大於 1000 的最小 " << x << " 的倍數為: " << gino << endl; return 0; } ``` ### 程式碼說明: 1. **變數 `gino` 初始化**:我們先將 `gino` 設為輸入數字 `x`,這樣 `gino` 一開始就會是 `x` 的倍數。 2. **`while` 迴圈的條件**:在 `gino` 小於或等於 1000 的情況下,迴圈會持續執行。 3. **增加 `gino` 的值**:每次迴圈執行時,我們都將 `gino` 增加 `x`,這樣 `gino` 會變成 `x` 的下一個倍數。 4. **條件不成立時結束**:當 `gino` 大於 1000 時,迴圈停止,此時的 `gino` 即為我們要找的答案。 ### 執行流程 假設 `x = 7`,那麼程式的執行流程如下: - `gino = 7`(初始值) - `gino` 小於或等於 1000,繼續迴圈:`gino = 14` - `gino` 小於或等於 1000,繼續迴圈:`gino = 21` - 這樣重複,直到 `gino = 1001`,此時跳出迴圈,輸出答案。 --- ### 小結:`for` 迴圈與 `while` 迴圈的異同 | 迴圈類型 | 適用情境 | 特點 | |-----------|------------------------------|----------------------------------------------------------------------| | `for` | 重複次數已知 | 適合用在確定執行次數的情況,初始化、條件和更新放在同一行 | | `while` | 重複次數不確定,需持續判斷 | 適合重複次數不確定的情境,每次執行前都會檢查條件,變數更新放迴圈內 | --- ### [簡單題目:輸出1到n](http://120.101.182.21/d/hd112/p/43) ### [簡單題目:請輸出某數的大於1000的最小倍數](http://120.101.182.21/d/hd112/p/44) ### [題目 1:找質數](http://120.101.182.21/d/hd112/p/39) ### [題目 2:算階乘](http://120.101.182.21/d/hd112/p/40) ### [題目 3:小於 100 的奇數](http://120.101.182.21/d/hd112/p/41) ### [題目 4:尋找數字中的偶數位數和奇數位數](http://120.101.182.21/d/hd112/p/42)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up