• 沒有找到結果。

程式流程控制 (下)

N/A
N/A
Protected

Academic year: 2022

Share "程式流程控制 (下)"

Copied!
32
0
0

加載中.... (立即查看全文)

全文

(1)

講師: 李根逸 (Ken-Yi Lee), E-mail: feis.tw@gmail.com

程式流程控制 (下)

【第四講】

!121

(2)

課程⼤大綱

條件判斷 :

if (

表⽰示式

) { ... }

[P.91]

if (

表⽰示式

) { ... } else { ... }

[P.93]

switch (

整數值

) { case

固定整數值

: ... 


default: ... }

[P.135]

重複執⾏行 (迴圈) :

while (

表⽰示式

) { ... }

[P.99]

for (

初始式; 表⽰示式; 迭代式

) { ... }

[P.123]

do { ... } while(

表⽰示式

);

[P.131]

警⽰示型迴圈與計數型迴圈

迴圈控制:

break 與 continue 關鍵字

[P.133]

!122

(3)

for 關鍵字

for (初始式; 表⽰示式; 迭代式) {

... }

相當於 :

!

!

!

範例 : 印出 1 ⾄至 10

{


初始式

;


while (

表⽰示式

) {
 ...


迭代式

;
 }


}

for (int i = 1; i <= 10; ++i) {
 printf(“%d\n”, i);


}

{
 int i = 1;

while (i <= 10) {


printf(“%d\n”, i);


++i;

}
}

!123

成⽴立

不成⽴立

表⽰示式

...

初始式

迭代式

(4)

【範例】迴圈的基本

試寫⼀一程式,印出由 1 ⾄至 100 間的整數

!

!

!

!

!

試寫⼀一程式,讓使⽤用者輸⼊入⼀一正整數 N 後,印出 1

⾄至該正整數 N 間的整數

1
2
 3
4
 5
6
 ...
100

!124

【範例】 int.cpp

【範例】 int100.cpp

(5)

【範例】迴圈列印

試寫⼀一程式,讓使⽤用者輸⼊入⼀一正整數 N 後,顯⽰示 1

⾄至 N 之間的所有奇數

試寫⼀一程式,印出由 100 ⾄至 1 間的整數

試寫⼀一程式,讓使⽤用者輸⼊入⼀一正整數 N 後,顯⽰示 1

⾄至 N 的整數和

試寫⼀一程式,讓使⽤用者輸⼊入⼀一正整數 N 後,印出 N 個星號 (*)

範例輸⼊入⼀一: 5 範例輸出⼀一: *****

範例輸⼊入⼀一: 8 範例輸出⼆二: ********

!125

【範例】 odd.cpp

【範例】 reverse.cpp

【範例】 sum.cpp

【範例】 print_star.cpp

(6)

警⽰示型迴圈與計數型迴圈

在選擇要使⽤用 while 或 for 時,通常以該迴圈的特 性來決定:

警⽰示型迴圈:該迴圈的結束條件是在某不明確事件 (例 如當使⽤用者輸⼊入 -1 ) 發⽣生時,請使⽤用 while

範例:猜數字

!

!

!

!

計數型迴圈:該迴圈在執⾏行明確次數後會結束的話,請 使⽤用 for

範例:算 1 ⾄至 N 的數字和

⼀一般情況下,先考慮使⽤用 for,不合適時再考慮 while

讀⼊入資料;


while (資料不是警⽰示值) {
 執⾏行動作;


讀⼊入資料;


}

!126

(7)

【範例】複利計算

試寫⼀一程式,計算某⼈人在銀⾏行中的定額存款在⼗十年間 的結算⾦金額 (每年無條件捨去⾄至整數位結算⼀一次)

計算公式 :

每年結算⾦金額 = 累計⾦金額 * (1 + 年利率)

請輸⼊入本⾦金: 1000
 請輸⼊入年利率: 0.05
 Year Amount


1 1050
 2 1102
 3 1157
 4 1214
 5 1274
 6 1337
 7 1403
 8 1473
 9 1546
 10 1623

!127

【範例】 interest.cpp

(8)

【範例】⽐比較⼤大⼩小

擂台賽! 利⽤用⼀一組變數去記錄現在擂台盟主,再⼀一

⼀一上台⽐比劃,每輪留下勝利者!

!

!

試寫⼀一程式,讓使⽤用者輸⼊入⼗十個數字後,顯⽰示其中最

⼤大的數字

試寫⼀一程式,讓使⽤用者輸⼊入⼗十個數字後,依序顯⽰示最

⼤大的兩個數字

試寫⼀一程式,讓使⽤用者輸⼊入⼗十個數字後,依序顯⽰示最

⼤大的三個數字

預設第⼀一個⼈人或拿個沙包為擂台主;


for (每⼀一個⼈人) {


if (與擂台主 PK 獲勝) { 換擂台主; }
 }

!128

【範例】 big3.cpp

【範例】 max10.cpp

【範例】 big2.cpp

(9)

【範例】暴⼒力的美

⽤用迴圈把所有可能的候選⼈人都⼀一⼀一列出來,再試著留 下我們想要的

!

!

試寫⼀一程式,輸⼊入某個正整數 N,判斷 N 是不是質

質數表⽰示除了 1 跟本⾝身以為沒有其他的因數 


試寫⼀一程式,顯⽰示 1 到 1000 間所有的質數

for (每⼀一個可能的候選⼈人) {


if (符合要求) { 做想做的事情; }
 }

!129

【範例】 prime.cpp

【範例】 is_prime.cpp

(10)

【範例】巢狀迴圈

試寫⼀一程式,印出下列結果:

!

!

!

試寫⼀一程式,輸⼊入⼀一個在 1 跟 9 間的整數,印出下 列結果:

*
**


***
****


*****

範例輸⼊入⼀一:


5

範例輸出⼀一:


*
**


***
****


*****

範例輸⼊入⼆二:


3

範例輸出⼆二:


*
**


***

!130

【範例】 triangleN.cpp

【範例】 triangle.cpp

(11)

do 關鍵字

do { ... } while (表⽰示式);

⾄至少會執⾏行 {...} 的內容⼀一次的while 語法

int grade;


do {


scanf(“%d”, &grade);


} while (grade < 0 || grade > 100);

成⽴立

不成⽴立 表⽰示式

...

!131

(12)

有兩種⽅方式可以產⽣生無窮迴圈:

使⽤用條件永遠為真的 while 迴圈:

!

!

使⽤用沒有條件的 for 迴圈 (預設為真):

【補充】無窮迴圈

!132

while (1) {
 // 執⾏行內容 }

for(;;) {
 // 執⾏行內容 }

(13)

break 和 continue 關鍵字

break: 強制結束 while, for 或 switch

!

!

!

!

!

continue: 跳⾄至 while 或 for 的下⼀一次迴圈開始

for (int i = 1; i <= 10; ++i) {
 if (i == 5) {


break;


}
 printf(“%d”, i);


}

for (int i = 1; i <= 10; ++i) {
 if (i == 5) {


continue;


}
 printf(“%d”, i);


}

!133

while (1) {
 讀⼊入資料;


if (資料是警⽰示值) {
 break;


}


執⾏行動作;


} 參考 [P.126]

(14)

【範例】迴圈控制

試寫⼀一程式 ,印出 1 ⾄至 10 間除了 5 之外的整數

!

!

試寫⼀一程式,印出 1 ⾄至 100 間除了 5 的倍數之外 各個整數

!

試寫⼀一程式,讓使⽤用者輸⼊入⼀一個整數後,顯⽰示該整數 的平⽅方值。反覆執⾏行,直到使⽤用者輸⼊入負數時才結束。

1 2 3 4 6 7 8 9 10

!134

【範例】 squared.cpp

【範例】 no5.cpp

【範例】 no5t.cpp

(15)

switch (整數值) {


case 固定整數值: ... ; default: ...; }

switch、case 與 default

char grade = ?;


switch (grade) {
 case ‘A’:


case ‘a’:


countA++;


break;


case ‘B’:


case ‘b’:


countB++;


break;


case ‘C’:


case ‘c’:


countC++;


break;


default:


countErr++;


break;


}

grade 是 ‘A’ 或 ‘a’ 時, 會執⾏行此⾏行

grade 是 ‘B’ 或 ‘b’ 時, 會執⾏行此⾏行

grade 是 ‘C’ 或 ‘c’ 時, 會執⾏行此⾏行

grade 不符合上⾯面所列時,會執⾏行此⾏行

!135

【範例】 grade.cpp

(16)

【範例】統計⾦金額

試寫⼀一程式,讓使⽤用者先輸⼊入賣出商品的總數後,分 別輸⼊入每個賣出商品的編號。輸⼊入完後,顯⽰示賣出的 總⾦金額

商品編號 商品⾦金額

1 90

2 75

3 83

4 89

5 71

Please enter the number of goods: 5
 1
5


5
4
 1

The amount is 411.

!136

【範例】 coin.cpp

(17)

習題 [1]

以下題⺫⽬目⽤用 for 改寫:

[E0401] E0307, [E0402] E0309 [E0403] E0310, [E0404] E0312 [E0405] E0314, [E0406] E0315 [E0407] E0316, [E0408] E0318 [E0409] E0319, [E0410] E0320 [0E411] E0331, [E0412] E0334

以下題⺫⽬目⽤用 switch 改寫:

[E0413] E0311, [E0414] E0334

!137

(18)

習題 [2]

[E0415] 試寫⼀一程式,印出下列結果:

!

!

!

[E0416] 試寫⼀一程式,輸⼊入⼀一個在 1 跟 9 間的整 數,印出下列結果:

*
 **


***


****


*****

範例輸⼊入⼀一:


5

範例輸出⼀一:


*
 **


***


****


*****

範例輸⼊入⼆二:


3

範例輸出⼆二:


*
 **


***

!138

(19)

習題 [3]

[E0417] 試寫⼀一程式,輸⼊入⼀一個在 1 跟 9 間的整 數,印出下列結果:

!

!

!

[E0418] 試寫⼀一程式,輸⼊入⼀一個在 1 跟 9 間的整 數,印出下列結果:

範例輸⼊入⼀一:


5 範例輸出⼀一:


*****


****


***
**


*

範例輸⼊入⼆二:


3

範例輸出⼆二:


***
**


*

範例輸⼊入⼀一:


5

範例輸出⼀一:


*****


****


***


**


*

範例輸⼊入⼆二:


3

範例輸出⼆二:


***
 **


*

!139

(20)

習題 [4]

[E0419] 試寫⼀一程式,輸⼊入⼀一個在 1 跟 9 間的整 數,印出下列結果:

!

!

!

[E0420] 試寫⼀一程式,輸⼊入⼀一個在 1 跟 9 間的整 數,印出下列結果:

範例輸⼊入⼀一:


5 範例輸出⼀一:


1
2 2
 3 3 3
 4 4 4 4
 5 5 5 5 5

範例輸⼊入⼆二:


3

範例輸出⼆二:


1
2 2
 3 3 3

範例輸⼊入⼀一:


5

範例輸出⼀一:


5 5 5 5 5
 4 4 4 4
 3 3 3
 2 2
1


範例輸⼊入⼆二:


3

範例輸出⼆二:


3 3 3
 2 2
1


!140

(21)

習題 [5]

[E0421] 試寫⼀一程式,輸⼊入⼀一個在 1 跟 9 間的整 數,印出下列結果:

!

!

!

[E0422] 試寫⼀一程式,輸⼊入⼀一個在 1 跟 9 間的整 數,印出下列結果:

範例輸⼊入⼀一:


5 範例輸出⼀一:


5
4 4
 3 3 3
 2 2 2 2
 1 1 1 1 1

範例輸⼊入⼆二:


3

範例輸出⼆二:


3
2 2
 1 1 1

範例輸⼊入⼀一:


5

範例輸出⼀一:


1
1 2
 1 2 3
 1 2 3 4
 1 2 3 4 5

範例輸⼊入⼆二:


3

範例輸出⼆二:


1
1 2
 1 2 3

!141

(22)

習題 [6]

[E0423] 試寫⼀一程式,輸⼊入⼀一個在 1 跟 9 間的整 ,印出下列結果:

!

!

!

[E0424] 試寫⼀一程式,輸⼊入⼀一個在 1 跟 9 間的整 數,印出下列結果:

範例輸⼊入⼀一:


5

範例輸出⼀一 1
 1 2
 1 2 3
 1 2 3 4
 1 2 3 4 5

範例輸⼊入⼆二:


3 範例輸出⼆二:


1
 1 2
 1 2 3

範例輸⼊入⼀一:


5

範例輸出⼀一: 


1
2 1
 3 2 1
 4 3 2 1
 5 4 3 2 1

範例輸⼊入⼆二:


3 範例輸出⼆二:


1
2 1
 3 2 1

!142

(23)

習題 [7]

[E0425] 試寫⼀一程式,輸⼊入⼀一個在 1 跟 9 間的整 ,印出下列結果:

!

!

!

[E0426] 試寫⼀一程式,讓使⽤用者輸⼊入⼀一整數後,繪 製相對應⾼高度的三⾓角形

範例輸⼊入⼀一:


5

範例輸出⼀一:


1
 2 1
 3 2 1
 4 3 2 1
 5 4 3 2 1

範例輸⼊入⼆二:


3 範例輸出⼆二:


1
 2 1
 3 2 1

範例輸⼊入⼀一:


3

範例輸出⼀一:


*
 ***


*****

範例輸⼊入⼆二:


5 範例輸出⼆二:


*
 ***


*****


*******


*********

!143

(24)

習題 [8]

[E0427] 試寫⼀一程式,讓使⽤用者輸⼊入⼀一正奇數後,

繪製相對應⾼高度的菱形

Please enter an odd integer: 3
 *
 ***


*

Please enter an odd integer: 5
 *
 ***


*****


***


*

!144

(25)

習題 [9]

[E0428*] 試寫⼀一程式,讓使⽤用者輸⼊入⼀一正整數 K 表⽰示三⾓角波的波⻑⾧長,另⼀一正整數 M 表⽰示三⾓角波的個 數後,繪製出三⾓角波圖

Please enter an integer (K): 3 
 Please enter an integer (M): 2

*
**


***
*


**
***


!145

(26)

!146

(27)

!147

(28)

!148

(29)

!149

(30)

!150

(31)

!151

(32)

!152

參考文獻

相關文件

 積熱電驛(Thermal relay, TH-RY),又稱為積熱過載 電驛(Thermal over-load relay, OL).  電磁開關(Magnetic

下列何者不歸屬於系統呼叫的行程控制(Process

專案導向應用程式開發 階梯程式編輯畫面 狀態的監視與控制 階梯程式助憶碼輔助顯示 階梯程式註解功能

[r]

電子 、 機械系 、 環工系 、 高分子、光電、電腦與通訊 本學程共計 7 學科, 18 學分,必須修畢全部學分,始

可程式控制器 (Programmable Logic Controller) 簡稱 PLC,是一種具有微處理機功能的數位電子 設備

藍牙 Android 遙控程式

 for…迴圈自初值開始判斷 &lt;條件判斷&gt; 是否為 true,若為 true 則執行 for 迴圈內的敘述,並依 &lt;增量值&gt;,每次增 加 (或減少) 指定的增量值,直至 &lt;條件判斷&gt;