--- tags: C++, 程式設計 --- # C++ 程式設計 流程控制 (下) ## 一、迴圈 ### (一) for #### 1、使用方法 for ( 初始條件 ; 條件式 ; 變更目前數值){ 執行內容; } step1:檢查初始條件,進入回圈內 step2:執行迴圈內容 step3:更新目前變數值 step4;檢查是否符合條件式,符合進入迴圈繼續執行,不符合 跳出迴圈 #### 2、範例 ```cpp= //舉例等差列和 1+2+3+4+5 int sum = 0; int i; for( i = 1 ; i <= 5 ; i++ ){ sum += i; // sum= sum + i; cout << " sum = " << sum << endl; } ``` ### (二) While #### 1、使用方法 while(條件式){ 執行內容; 變更目前數值; } step1:檢查是否符合條件式,符合進入迴圈執行,不符合跳過迴圈。 step2:進入迴圈重複執行並變更目前數值,直到不符合條件式跳出迴圈。 #### 2、範例 ```cpp= //舉例等差列和 1+2+3+4+5 int sum = 0; int i = 1 ; while ( i <= 5 ){ sum += i; i += 1; } cout << "sum = " << sum << endl; ``` ### (三)do-while #### 1、使用方法 do{ 執行內容; 變更目前數值; } while (條件式) step1: 執行內容執行並變更目前數值 step2: 測試條件如符合條件跳回do重新執行,若不符合繼續往下一行執行 #### 2、範例 ```cpp= //舉例等差列和 1+2+3+4+5 int sum = 0; int i = 1 ; do{ sum += i; i += 1; }while ( i <= 5 ) cout << "sum = " << sum << endl; ``` ### (四)巢狀迴圈 #### 迴圈內有迴圈 #### 範例 ```cpp= 使用簡易九九乘法表舉例 int x; int y; for (x = 1; x <= 9; x++){ for(y = 1; y <= 9; y++){ cout << x << '*' << '=' << x*y << '\t'; } cout << endl; } ``` ### (五)無限迴圈 #### 不會停止的迴圈 #### 範例 使用while做舉例 int x = 100; while ( x > 90 ){ cout << "停不下來" << endl; x += 1; } ### (六)break & continue #### 1、說明 break:強制跳出迴圈 continue:回到迴圈 #### 2、舉例 ```cpp= //【break】 int i = 1; while ( i > 0 ){ cout <<" i= " << i << endl; if( i == 5 ){ break; //跳出 while 迴圈 (不是跳出自己) } i++; } //則 output: i= 1,2,3,4 ``` ![](https://i.imgur.com/LkJwU52.png) #### 3、舉例 ```cpp= //【continue】 int i = 1; for ( i=1; i <= 10; i++ ){ if( i==5 ){ continue; // //回到 while 迴圈 (不是回到自己) } cout <<"i=" << i << endl; } //則 output: i= 1,2,3,4,6,7,...,n ``` ![](https://i.imgur.com/ABAApqq.png) ## 二、練習 ### (一)題目一: /*試寫一程式,可計算出1到指定數值(由使用者輸入)間,所有可被3整除的數值之總和。 (限用「for」+「if」。)*/ #### 1、程式碼(答案不唯一): ```cpp= #include<iostream> using namespace std; /*題目1: 試寫一程式,可計算出1到指定數值(由使用者輸入)間,所有可被3整除的數值之總和。 (限用「for」+「if」。)*/ int main() { int a, b, c, d; cout<<"請輸入預想測試數字:"; cin>>a; d = 0; for (b = 0; b <= a; b++) { c = b % 3; if (c == 0) { d = d + b; } } cout<<"可被3整除的數值之總和:"<<d; } ``` #### 2、圖示: ![](https://i.imgur.com/6nBayxL.png) ### (二)題目二: 試寫一程式,可計算出1到指定數值(由使用者輸入)間,所有可被3整除的數值之總和。 (限用「while」+「if」。) #### 1、程式碼(答案不唯一): ```cpp= #include<iostream> using namespace std; /*題目2: 試寫一程式,可計算出1到指定數值(由使用者輸入)間,所有可被3整除的數值之總和。 (限用「while」+「if」。)*/ int main() { int a, b, c, d; cout<<"請輸入預想測試數字:"; cin>>a; d = 0; b = 0; while (b <= a) { c = b % 3; if (c == 0) d = d + b; b += 1; } cout<<"可被3整除的數值之總和:"<<d; } ``` #### 2、圖示: ![](https://i.imgur.com/SFEFnAk.png) ### (三)題目三: 試寫一程式,可計算出1到指定數值(由使用者輸入)間,所有可被3整除的數值之總和。 (限用「while」+「if」。) #### 1、程式碼(答案不唯一): ```cpp= #include<iostream> using namespace std; /*題目3: 試寫一程式,可計算出1到指定數值(由使用者輸入)間,所有可被3整除的數值之總和。 (限用「do-while」+「if」。)*/ int main() { int a, b, c, d; cout<<"請輸入預想測試數字:"; cin>>a; d = 0; b = 0; do { c = b % 3; if (c == 0) d = d + b; b += 1; } while (b <= a); cout<<"可被3整除的數值之總和:"<<d; } ``` #### 2、圖示: ![](https://i.imgur.com/gdtWG6q.png)