- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章决策叙述.doc
第五章 決策敘述
人類的生活必須不斷面對決策問題,連我家一個不到三歲的小孩,也常要思考他手裡的十元是要坐電動車還是買棒棒糖。程式語言是協助解決人類問題的工具,當然也有決策敘述,C語言依決策點的多寡,分為以下三種決策敘述,第一是單一分歧決策的If - Then,例如肚子餓了就吃飯;第二是雙向分歧決策If - Then Else,例如肚子 餓了就吃飯,否則繼續前進;第三是多向分歧決策的Select Case,例如你身上5000元,走進一家五星級的大飯店用餐,你的分歧點就很多,有自助餐、中式套餐、日本料理、泰國餐點等等分歧點。本章的重點即是探討C語言的決策敘述。
5-1 if
if通常用於單一分歧的決策,它的使用時機為“假如~則~”,也就是條件成立時,則執行某項工作,但若條件不成立時,則不予理會。其語法如下:
if (運算式)
{
敘述區塊;
}
以上語法說明如下:
1. 若運算式的值為1(true)則執行敘述區塊,運算式的值若為0(false),則不會被執行,其流程圖如下:
2. 敘述區塊內的敘述若只有一個,則敘述區塊上下兩個大括號可予省略。例如,
以下敘述可以判斷變數a是否等於0,若條件成立則輸出Game Over。
if(a==0)
printf(〝Game Over 〞);
3. 若敘述區塊上下的大括號遺漏,則條件成立時,C語言僅執行敘述區塊的第一個敘述,但更嚴重的問題,敘述區快第二個以後的敘述,不論條件成立與否,均含自動執行。例如,以下敘述執行之後,b=0,c=3。
a=2;b=0;c=0;
if(a= =0)
b=3;
c=3;
printf(“%d, %d”, b, c); /* b=0, c=3 */
4. 敘述區塊內可以放置任何合法的敘述,當然也可以放置if,if中有if 稱為巢狀if。例
如,以下敘述除可判斷a是否及格,更可判斷其是否優等。
if(a=60)
{
b=”pass”; 及格
if (a=90)
c=”outstanding”; 優等
}
範例5-1a
請輸入一個成績,若此成績大於等於60分,則輸出“及格”。
【執行結果】
【程式列印】
本例即是單一分歧決策的典型範例,當條件成立時,則執行某個敘述。
範例 5_1b
請寫一程式,滿足以下條件。
1、 輸入兩個數。
2、 求輸入兩數極大值。
3、 輸出極大值。
【執行結果】
【程式列印】
[演算法則]
1. 輸入第一數,本例以變數a儲存。
2. 輸入第二數,本例以變數b儲存。
3. 設定極大值(max)為第一數。
max=a
4. 當第二數(b)大於極大值時,極大值即以b取代。
if (bmax)
max=b;
5. 輸出極大值(max)即為所求。
【自我練習】
請寫一程式,滿足以下條件。
1、 輸入三個數。
2、 求三個數極小值。
3、 輸出極小值。
[演算法則]
1. 輸入第一個數,本例以變數a儲存。
2. 輸入第二個數,本例以變數b儲存。
3. 輸入第三個數,本例以變數c儲存。
4. 設定極大值(max)為第一數。
5. 當第二數(b)大於極大值時,極大值即以b取代。
if (bmax)
max = b;
6. 當第三數(c)大於極大值時,極大值即以c取代。
if (cmax)
max = c;
7. 輸出極大值 max。
範例 5_1c
請寫一程式,滿足以下條件。
1、 輸入三個數。
2、 將此三個數由小而大輸出。
【執行結果】
【程式列印】
【程式說明】
1. 分別以a、b及c表示欲排序的資料。
2. 假如a大於b,則a與b交換,如下圖的(1)。
3. 假如b大於c,則b與c交換,如下圖的(2)。
4. 假如a大於b,則a與b交換,如下圖的(3)排序已完成,共需進行3次的比較與交換,如下圖所示。
a
b
C
(1)
(2)
(3)
[補充說明]
1. 若有4筆資料需要排序,則共需進行6次比較與交換,如下圖所示。
a
b
C
D
(1)
(2)
(3)
(4)
(5)
(6)
2. 若有5筆資料需排序,則共需進行10次比較與交換,如下圖所示。
a
b
c
d
e
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
3. 以上為3、4或5筆資料的比較與排序,其比較與交換的次數尚可克服。但是,若欲排序的資料超過5個,例如20筆資料欲排序,則應待迴圈與陣列敘述介紹以後,才有較快速的解法。
【自我練習】
1、 將4個數
文档评论(0)