---
# System prepended metadata

title: C++ 程式設計 流程控制 (下)
tags: [' 程式設計', C++]

---

---
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)
