5-2-2 if-else 條件敘述(3) 5-2 認識選擇結構 P 5-12 程式範例: If else if 敘述的應用範例: CH05_04.c
17.
5-2-2 if-else 條件敘述(3) 5-2 認識選擇結構 P 5-12 在 9~18 行中,各位可在 if 敘述和 else if 中選擇符合條件運算式的程式敘述區塊,如果以上條件運算式都不符合,就執行最後的 else 敘述。 執行結果 程式解說
18.
5-2-3 switch 選擇敘述(1) 5-2 認識選擇結構 P 5-13 底下先以流程圖來表示 switch 敘述的執行方式: 其它敘述 case A 敘述 break; default 敘述 case A 敘述 break; 條件不成立 (0) 條件成立 (1) 條件成立 (1) 條件不成立 (0) 條件不成立 (0) switch 條件式 結束 switch Case A Case B
19.
5-2-3 switch 選擇敘述(1) 5-2 認識選擇結構 P 5-13 switch 敘述的執行過程重點說明如下: 先求出運算式的值,再將此值與 case 的常數值進行比對。 如果找不到吻合的常數值,則會執行 default 敘述,如果沒有 default 敘述則結束 switch 敘述。 若找到相同的值則執行 case 內的程式敘述,執行完任何 case 區塊後,並不會離開 switch 區塊。而是往下繼續執行其它的 case 敘述與 default 敘述。所以 case 敘述的最後必須加上 break 敘述來結束 switch 敘述。
5-3-1 for 重複結構(1) 5-3 重複式結構 P 5-17 for 迴圈必須事先指定迴圈控制變數的起始值、條件以及控制變數的增減值,以決定迴圈重複的次數。 for 迴圈的執行流程: 其它敘述 { 程式敘述 增減控制變數的值 } 條件成立 (1) 條件不成立 (0) 設定起始值 重複條件式 離開 for 迴圈 進入 for 迴圈
24.
5-3-1 for 重複結構(1) 5-3 重複式結構 P 5-17 底下為 for 迴圈的格式: for 迴圈中的三個運算式必須以分號 ( ; ) 分開,而且一定要設定跳離迴圈的條件以及控制變數的遞增或遞減值。 for( 控制變數起始值 ; 迴圈重複條件式 ; 控制變數增減值 ) { } 程式敘述 ;
25.
5-3-1 for 重複結構(1) 5-3 重複式結構 P 5-18 for 迴圈中的三個運算式相當具有彈性,可以省略不需要的運算式,也可以擁有一個以上的運算子句。 如下是使用 for 迴圈來計算 1 加到 10 的程式片斷: int i=1,sum=0; /* 宣告 i 初值 */ for (; i<=10 ; i++) /* 省略變數起始值的設定,分號不可省略 */ { sum+=i; /* 迴圈敘述 */ printf("i=%d\t sum=%d\n", i, sum); }
26.
5-3-1 for 重複結構(2) 5-3 重複式結構 P 5-18 程式範例: for 條件敘述與 n! 的應用範例: CH05_06.c
27.
5-3-1 for 重複結構(2) 5-3 重複式結構 P 5-19 在第 8 行中 for 敘述中我們先設定了變數 i 的起始值為 1 ,迴圈重複條件為 I 小於等於 10 , I 的遞增值為 1 ,所以當 I 大於 10 時,就會離開 for 迴圈。 執行結果 程式解說
28.
5-3-1 for 重複結構(2) 5-3 重複式結構 P 5-19 在此還要介紹一種 for 的巢狀迴圈 (Nested loop) 。 在巢狀 for 迴圈結構中,執行流程必須先等內層迴圈執行完畢,才會繼續執行外層迴圈。 兩層式的巢狀 for 迴圈結構格式如下: for( 控制變數起始值 1; 迴圈重複條件式 ; 控制變數增減值 ) { for( 控制變數起始值 2; 迴圈重複條件式 ; 控制變數增減值 ) { } } 程式敘述 ; 程式敘述 ;
29.
5-3-1 for 重複結構(3) 5-3 重複式結構 P 5-19 程式範例: 巢狀 for 條件敘述與 n! 的應用範例: CH05_07.c
30.
5-3-1 for 重複結構(3) 5-3 重複式結構 P 5-20 在本程式中,是利用巢狀迴圈 (Nested loop) 來列印 n! 及其值。 第 8 行外層 for 迴圈控制 i 輸出,而第 10 行則利用內層 for 迴圈控制 sum 輸出。 請注意! for 迴圈雖然具有很大的彈性,使用時務必要設定跳離迴圈的條件,否則程式將會陷入無窮迴圈。 執行結果 程式解說
31.
5-3-2 while 迴圈敘述(1) 5-3 重複式結構 P 5-21 while 結構與 for 結構類似,都是屬於前測試型迴圈。 下圖為 while 敘述執行的流程: 其它敘述 { while 程式敘述 增減運算式 } 條件成立 (1) 條件不成立 (0) while 條件式 離開 while 迴圈 進入 while 迴圈
32.
5-3-2 while 迴圈敘述(1) 5-3 重複式結構 P 5-21 迴圈內的敘述可以是一個敘述或是多個陳述句。 如果有多個陳述句在迴圈中執行,可以使用大括號括住。 While 敘述的語法大致如下: while( 重複條件式 ) { 程式敘述 ; } While 迴圈必須自行加入起始值以及遞增或遞減運算式,否則條件式永遠成立時,將造成無窮迴圈。
33.
5-3-2 while 迴圈敘述(2) 5-3 重複式結構 P 5-22 程式範例: While 條件敘述的說明與應用範例: CH05_08.c
5-5 上機實習課程(2) 5-5 上機實習課程 P 5-33 上機實習範例: CH05_16.c 請使用雙重 for 迴圈來設計一程式,描繪出如下圖畫面:
51.
5-5 上機實習課程(2) 5-5 上機實習課程 P 5-33 上機實習範例: CH05_16.c 執行結果
52.
5-5 上機實習課程(3) 5-5 上機實習課程 P 5-34 上機實習範例: CH05_17.c 請使用雙重 for 迴圈與 break 指令來設計一程式,描繪出如下圖畫面: 1 12 123 1234 1234 1234
53.
5-5 上機實習課程(3) 5-5 上機實習課程 P 5-35 上機實習範例: CH05_17.c 執行結果
54.
5-5 上機實習課程(4) 5-5 上機實習課程 P 5-36 上機實習範例: CH05_18.c 以下程式範例是請使用者輸入一個代表成績的字元,包括 A 、 B 、 C 、 D 、 E 五級,輸入大小寫字母都可接受,並輸出所代表的成績意義。 如果所輸入的不是以上字元,將輸出 " 沒有此分數群組 " 。 執行結果 開啟 CH05_18.c