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

#### 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
```

## 二、練習
### (一)題目一:
/*試寫一程式,可計算出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、圖示:

### (二)題目二:
試寫一程式,可計算出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、圖示:

### (三)題目三:
試寫一程式,可計算出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、圖示:
