# continue, break 2020 Clang, 0w1 --- ### continue? ```c++ while (條件 X) { 事件 A if (條件 Y) continue; 事件 B } ``` => ```c++ 1. 條件 X 為真?若否,跳到 5 // while (條件 X) { 2. 進行 A // 事件 A 3. 條件 Y 為真?若是,跳到 1 // if (條件 Y) continue; 4. 進行 B // 事件 B 5. (迴圈之後) // } ... ``` --- ### Why continue? 題目:枚舉所有 100 以下自然數中 2 的倍數 ```c++ int i = 0; while (i + 1 <= 100) { i = i + 1; if (i % 2 == 0) { cout << i << endl; } } ``` ---- 題目:枚舉所有 100 以下自然數中同時是 2 和 3 的倍數 ```c++ int i = 0; while (i + 1 <= 100) { i = i + 1; if (i % 2 == 0) { if (i % 3 == 0) { cout << i << endl; } } } ``` ---- 題目:枚舉所有 100 以下自然數中同時是 2 和 3 和 5 的倍數 ```c++ int i = 0; while (i + 1 <= 100) { i = i + 1; if (i % 2 == 0) { if (i % 3 == 0) { if (i % 5 == 0) { cout << i << endl; } } } i = i + 1; } ``` ---- ![](https://i.imgur.com/EZ5CEjt.jpg) ---- 題目:枚舉所有 100 以下自然數中同時是 2 和 3 和 5 的倍數 ```c++ int i = 0; while (i + 1 <= 100) { i = i + 1; if (i % 2 != 0) continue; if (i % 3 != 0) continue; if (i % 5 != 0) continue; cout << i << endl; } ``` --- ### continue in 白話文 ![](https://i.imgur.com/JcZvX3Y.jpg) --- ### break? ```c++ while (條件 X) { 事件 A if (條件 Y) break; 事件 B } ``` => ```c++ 1. 條件 X 為真?若否,跳到 5 // while (條件 X) { 2. 進行 A // 事件 A 3. 條件 Y 為真?若是,跳到 5 // if (條件 Y) break; 4. 進行 B // 事件 B 5. (迴圈之後) // } ... ``` --- ### Why break? 題目:若存在,輸出 100 以下的自然數中第一個 2 的倍數 ```c++ int i = 0; while (i + 1 <= 100) { i = i + 1; if (i % 2 == 0) { cout << i << endl; break; } } ``` ---- 題目:若存在,輸出 100 以下的自然數中第一個同時是 2, 3, 5 的倍數 ```c++ int i = 0; while (i + 1 <= 100) { i = i + 1; if (i % 2 != 0) continue; if (i % 3 != 0) continue; if (i % 5 != 0) continue; cout << i << endl; break; } ``` --- ### break in 白話文 ![](https://i.imgur.com/hfOGKUS.jpg) --- ### 多重迴圈裡的 continue * 只會 continue 到第一個包住他的迴圈 ---- ```c++ int i = 0; while (i + 1 <= 3) { i = i + 1; int j = 0; while (j + 1 <= 3) { j = j + 1; if (j % 2 == 1) continue; cout << j << endl; } } ``` => ```c++ 2 2 2 ``` --- ### 多重迴圈裡的 break * 只會 break 出第一個包住他的迴圈 ---- ```c++ int i = 0; while (i + 1 <= 3) { i = i + 1; int j = 0; while (j + 1 <= 3) { j = j + 1; if (j == 2) break; cout << j << endl; } } ``` => ```c++ 1 1 1 ``` --- ### 避免縮排地獄就對了 ![](https://i.imgur.com/EZ5CEjt.jpg) --- ### do-while + break 解 if 縮排地獄 ```c++ if (條件 X) { 事件 A if (條件 Y) { 事件 B if (條件 Z) { 事件 C if () ... } } } ``` ---- ```c++ do { if (not 條件 X) break; 事件 A if (not 條件 Y) break; 事件 B if (not 條件 Z) break; 事件 C if () ... } while (0); ```
{"metaMigratedAt":"2023-06-15T05:09:53.342Z","metaMigratedFrom":"Content","title":"continue, break","breaks":true,"contributors":"[{\"id\":\"dec33987-0cd9-4214-9d3e-825262921019\",\"add\":5613,\"del\":5052}]"}
    241 views