版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第4章章 流程控制流程控制4-1循序結(jié)構(gòu) 4-2選擇結(jié)構(gòu) 4-3重複結(jié)構(gòu)4-4其他迴圈相關(guān)敘述 4-5本章綜合練習(xí)4-1循序結(jié)構(gòu) l循序結(jié)構(gòu)的程式,是以程式第一行敘述為進(jìn)入點(diǎn),依序由上往下執(zhí)行到程式的最後一行敘述。以下是流程示意圖:循序式結(jié)構(gòu)的流程示範(fàn):CH04_01l程式範(fàn)例是很簡(jiǎn)單的輸出輸入功能,不過(guò)是用來(lái)說(shuō)明循序結(jié)構(gòu)由上往下的執(zhí)行順序。 選擇結(jié)構(gòu)l選擇結(jié)構(gòu)的條件敘述是讓程式能夠選擇應(yīng)該執(zhí)行的程式碼,就好比各位開車到十字路口,可根據(jù)不同的狀況來(lái)選擇需要的路徑。 lC中提供了五種相實(shí)用的條件控制敘述,分別為if、if-else、條件運(yùn)算子、if else if 以及switch控制敘述等五
2、種。選擇結(jié)構(gòu)流程示意圖 if條件敘述 lif敘述式是最簡(jiǎn)單的一種條件判斷式,可先行判斷條件敘述是否成立,再依照結(jié)果來(lái)決定所要執(zhí)行的程式敘述。l在C中,經(jīng)過(guò)比較運(yùn)算子的運(yùn)算,其中非0(零)的數(shù)都會(huì)被視為真(true),而將0視為假(false)。 if條件敘述的流程圖 if條件敘述的應(yīng)用與示範(fàn):CH04_02l程式範(fàn)例是讓各位輸入停車時(shí)數(shù),以一小時(shí)50元收費(fèi),當(dāng)大於一小時(shí)才開始收費(fèi),並列印出停車費(fèi)用。if- else條件敘述 lif-else敘述提供了兩種不同的選擇,可以比單純只使用if條件敘述,節(jié)省更多判斷的時(shí)間。 lif-else敘述的作用是當(dāng)if的判斷條件成立時(shí),就執(zhí)行程式區(qū)塊內(nèi)的敘述,如
3、果不成立,就會(huì)執(zhí)行else後的敘述區(qū)塊。 if else 條件敘述的流程圖 if else條件敘述的應(yīng)用與示範(fàn):CH04_03l程式範(fàn)例是利用if else條件敘述來(lái)判斷所輸入的國(guó)文成績(jī)是否及格,如果大於或等於60則列印本科成績(jī)及格.,否則列印本科成績(jī)不及格.。 條件運(yùn)算子 l條件運(yùn)算子(conditional operator)是C中唯一的一個(gè)三元運(yùn)算子(ternary operator),它和if else條件敘述功能一樣,可以用來(lái)替代簡(jiǎn)單的if else條件敘述,讓程式碼看起來(lái)更為簡(jiǎn)潔。語(yǔ)法格式如下:l條件運(yùn)算式?程式敘述一:程式敘述二 ;條件運(yùn)算子的應(yīng)用與示範(fàn):CH04_04l程式範(fàn)例
4、是利用條件運(yùn)算子來(lái)判斷所輸入的數(shù)字為偶數(shù)與奇數(shù),並列印其判斷結(jié)果。 if else if條件敘述lif else if條件敘述是一種多選一的條件敘述,讓使用者在if敘述和else if中選擇符合條件運(yùn)算式的程式敘述區(qū)塊,如果以上條件運(yùn)算式都不符合,就執(zhí)行最後的else敘述,或者這也可看成是一種巢狀if else結(jié)構(gòu)。 l並非每個(gè)if都會(huì)有對(duì)應(yīng)的else,但是else一定對(duì)應(yīng)到最接近的一個(gè)if,如果對(duì)應(yīng)錯(cuò)誤,往往會(huì)造成不同的結(jié)果,這也是日後各位除錯(cuò)時(shí)容易犯的小bug。if else if 條件敘述的流程圖 if else if 條件敘述與閏年的判斷應(yīng)用與示範(fàn):CH04_05 l程式範(fàn)例是利用if
5、 else if條件敘述來(lái)執(zhí)行潤(rùn)年計(jì)算規(guī)則,以讓使用者輸入西元年來(lái)判斷是否為潤(rùn)年。 switch條件敘述 l在進(jìn)行多重選擇的時(shí)候,過(guò)多的else-if條件敘述經(jīng)常會(huì)造成程式維護(hù)上的困擾。 lC提供了switch條件敘述,讓程式更加簡(jiǎn)潔清楚。 lswitch敘述必須依據(jù)同一個(gè)運(yùn)算式的不同結(jié)果來(lái)選擇所要執(zhí)行的case敘述。 失敗經(jīng)過(guò)(falling through)現(xiàn)象 lswitch條件敘述,如果找到相同的結(jié)果值則執(zhí)行該case內(nèi)的程式敘述,當(dāng)執(zhí)行完任何case區(qū)塊後,並不會(huì)直接離開switch區(qū)塊。l通常每道case敘述最後,必須加上break敘述來(lái)結(jié)束switch敘述,才可以避免失敗經(jīng)過(guò)的情
6、況。 lswitch(條件運(yùn)算式)敘述中的括號(hào)絕不可省略,這也是除錯(cuò)的熱門景點(diǎn)之一喔!switch 條件敘述的流程圖 switch條件敘述的應(yīng)用與示範(fàn):CH04_06 l程式範(fàn)例是利用switch 條件敘述來(lái)輸入所要旅遊的地點(diǎn),並分別顯示其價(jià)格。 l其中大小寫字母都代表同一地點(diǎn),並利用break的特性,設(shè)定多重的case條件。重複結(jié)構(gòu)l重複結(jié)構(gòu)是一種迴圈控制,根據(jù)所設(shè)立的條件,重複執(zhí)行某一段程式敘述,直到條件判斷不成立,才會(huì)跳出迴圈。迴圈種類功能說(shuō)明for敘述適用於計(jì)數(shù)式的條件控制,使用者已事先知道迴圈的次數(shù)。while敘述迴圈次數(shù)為未知,必須滿足特定條件,才能進(jìn)入迴圈,同樣的,只有不滿足條件
7、測(cè)試後,迴圈才會(huì)結(jié)束。do-while敘述會(huì)先執(zhí)行一次迴圈內(nèi)的敘述,再進(jìn)行條件測(cè)試。for迴圈敘述 l1.設(shè)定控制變數(shù)起始值。l2.如果條件運(yùn)算式為真則執(zhí)行for迴圈內(nèi)的敘述。l3.執(zhí)行完成之後,增加或減少控制變數(shù)的值,可視使用者的需求來(lái)作控制,再重複步驟2。l4. 如果條件運(yùn)算式為假,則跳離for迴圈。for迴圈敘述的流程圖 for迴圈敘述的應(yīng)用與示範(fàn):CH04_07l程式範(fàn)例是利用for 迴圈來(lái)計(jì)算1加到10的累加值,是相當(dāng)經(jīng)典的for迴圈教學(xué)範(fàn)例。 巢狀for迴圈 l所謂巢狀for迴圈,就是多層式的for迴圈架構(gòu)。 l巢狀for迴圈結(jié)構(gòu)中,執(zhí)行流程必須先將內(nèi)層迴圈執(zhí)行完畢,才會(huì)繼續(xù)執(zhí)行外
8、層迴圈,容易犯錯(cuò)的地方是迴圈間不可交錯(cuò)。 九九乘法表的列印實(shí)作:CH04_08l程式範(fàn)例是利用巢狀for 迴圈來(lái)設(shè)計(jì)的九九乘法表列印實(shí)作。 l其中兩個(gè)for迴圈的執(zhí)行次數(shù)都是9次,所以內(nèi)圈的printf(%d x %d=%dt, b, a, a*b);敘述共執(zhí)行了81次。而外圈的printf(n);只執(zhí)行9次。 while迴圈敘述 lwhile迴圈敘述與for迴圈敘述類似,都是屬於前測(cè)試型迴圈。 l運(yùn)作方式則是在程式敘述區(qū)塊中的開頭必須先行檢查條件運(yùn)算式,當(dāng)運(yùn)算式結(jié)果為true時(shí),才會(huì)執(zhí)行區(qū)塊內(nèi)的程式。 lwhile迴圈還必須自行加入起始值與設(shè)定一個(gè)變數(shù)作為計(jì)數(shù)器,當(dāng)每執(zhí)行一次迴圈,在程式區(qū)塊
9、敘述中計(jì)數(shù)器的值必須要改變,否則如果條件式永遠(yuǎn)成立時(shí),也將造成所謂無(wú)窮迴圈。while迴圈敘述的流程圖 while迴圈敘述來(lái)計(jì)算n!的值:CH04_09l程式範(fàn)例是利用利用while迴圈讓使用者輸入n值,並分別計(jì)算1!到n!的值。 l程式中的i就是while迴圈中控制迴圈的計(jì)數(shù)器。一個(gè)整數(shù)的所有正因數(shù):CH04_10 l程式範(fàn)例也是利用while迴圈來(lái)求出使用者所輸入整數(shù)的所有正因數(shù)。 lwhile迴圈中,藉由a=n的條件式以及a+;敘述來(lái)控制程式重複的次數(shù)。do while迴圈敘述 ldo-while迴圈敘述無(wú)論如何一定會(huì)先執(zhí)行迴圈內(nèi)的程式敘述,再測(cè)試條件式是否成立,如果成立的話再返回迴圈起
10、點(diǎn)重複執(zhí)行敘述。 ldo-while迴圈內(nèi)的程式敘述,無(wú)論如何至少會(huì)被執(zhí)行一次。do while迴圈敘述的流程圖 do while迴圈的應(yīng)用實(shí)作:CH04_11l程式範(fàn)例是利用 do while迴圈敘述來(lái)由使用者輸入n值,當(dāng)n小於10時(shí)才進(jìn)行1到n的累加計(jì)算。 l過(guò)當(dāng)n大於10時(shí),do while敘述還是會(huì)執(zhí)行一次迴圈內(nèi)的敘述,這點(diǎn)可是和使用while迴圈敘述不同之處。 蝸牛爬樹問(wèn)題:CH04_12 l這個(gè)程式範(fàn)例也是利用do while迴圈敘述來(lái)解決蝸牛爬樹問(wèn)題。 l假如有一隻蝸牛爬一棵10公尺的大樹,白天往上爬 2 公尺,但晚上會(huì)掉下 1 公尺,請(qǐng)問(wèn)要幾天才可爬到樹頂? 其他迴圈相關(guān)敘述l
11、一個(gè)由C的基本流程控制寫出的應(yīng)用程式,有時(shí)候會(huì)出現(xiàn)一些特別的需求。 l要跳出程式敘述區(qū)塊或者返回迴圈起點(diǎn)時(shí),就可以使用break或continue敘述,又或是想要將程式流程直接改變至任何位置執(zhí)行,也可以使用goto敘述來(lái)達(dá)成。break敘述lbreak敘述在之前多重選擇switch敘述中已經(jīng)使用過(guò),相信各位應(yīng)該有點(diǎn)眼熟不過(guò)break並不只限於和switch搭配使用,任何一種迴圈類型,都能使用break敘述來(lái)強(qiáng)制跳出所在的迴圈敘述區(qū)塊。 lbreak敘述在巢狀迴圈中的內(nèi)層迴圈,一旦執(zhí)行break敘述時(shí),break就會(huì)立刻跳出最近的一層迴圈區(qū)塊,並將控制權(quán)交給區(qū)塊外的下一行程式。 break敘述的
12、應(yīng)用與示範(fàn):CH04_13l程式範(fàn)例是利用break敘述來(lái)控制九九乘法表的列印程式,由使用者輸入數(shù)字,並列印此數(shù)字之前的九九乘法表項(xiàng)目。 continue敘述lcontinue 敘述的功能是強(qiáng)迫 for、while、do while等迴圈敘述,結(jié)束正在迴圈本體區(qū)塊內(nèi)進(jìn)行的程序,而將控制權(quán)轉(zhuǎn)移到迴圈開始處。 lcontinue 與 break 敘述的最大差別在於continue 只是忽略之後未執(zhí)行的敘述,但並未跳離迴圈。語(yǔ)法格式如下: lcontinue;continue敘述的應(yīng)用與示範(fàn):CH04_14 l程式範(fàn)例是利用continue敘述來(lái)控制九九乘法表的列印程式,由使用者輸入數(shù)字,並列印所指
13、定數(shù)字之外的所有九九乘法表項(xiàng)目。 簡(jiǎn)單密碼驗(yàn)證程式:CH04_15l程式範(fàn)例是同時(shí)結(jié)合break以及continue敘述特性來(lái)設(shè)計(jì)一程式讓使用者輸入密碼後,進(jìn)行簡(jiǎn)單密碼驗(yàn)證工作,不過(guò)輸入次數(shù)以三次為限喔! goto敘述lgoto 敘述是一種允許強(qiáng)制跳脫的流程控制敘述,只要在goto 敘述所要前往的程式敘述所在設(shè)立標(biāo)記,就可以直接從goto所在位置跳到標(biāo)記處。 lgoto敘述必須搭配設(shè)定的標(biāo)籤來(lái)使用,而標(biāo)籤名稱則是一個(gè)識(shí)別字加上冒號(hào)(:)所組成。 l程式執(zhí)行到goto敘述時(shí),便會(huì)跳躍至標(biāo)籤名稱所在敘述,而繼續(xù)往下執(zhí)行。 goto敘述的應(yīng)用與示範(fàn):CH04_16 l程式範(fàn)例用來(lái)說(shuō)明goto敘述的使
14、用方式,其中分別設(shè)定了三個(gè)標(biāo)籤,透過(guò)if敘述判斷,只要程式執(zhí)行到所搭配的goto敘述,則會(huì)跳至該標(biāo)籤敘述,繼續(xù)往下執(zhí)行。kbhit()函數(shù)應(yīng)用lkbhit()函數(shù)含括在標(biāo)頭檔內(nèi),主要功用是在不會(huì)中斷程式來(lái)等待使用者輸入的情況下,會(huì)去檢查緩衝區(qū)是否有資料。 l適合在某些需要程式持續(xù)執(zhí)行,直到使用者碰觸任一按鍵,才產(chǎn)生其它執(zhí)行請(qǐng)求的狀況,例如螢?zāi)槐Wo(hù)程式。 體重計(jì)算程式實(shí)作:CH04_17.clwhile迴圈重複在畫面顯示字串輸入任一鍵結(jié)束程式,直到使用者碰觸任一鍵後才會(huì)結(jié)束執(zhí)行。求取最大值程式:CH04_18.c l設(shè)計(jì)一程式,讓使用者輸入任意數(shù)目之?dāng)?shù)字,並利用for迴圈來(lái)輸入與尋找這些數(shù)字中的最大值。近似值的求解程式:CH04_19.c l設(shè)計(jì)一程式可輸入k值,求的近似值:l ,其中k的值越大,的近似l l 值越精確。knnn012) 1(4n!的計(jì)算程式:CH04_20.cl利用 while迴圈讓使用者輸入n值,並計(jì)算n!的值。 商品金額與折扣計(jì)算 l榮欽百貨公司準(zhǔn)備促銷三種商品,再依照顧客消費(fèi)金額進(jìn)行折扣優(yōu)惠。促銷的商品資料如下:l根據(jù)上表,可計(jì)算出顧客的總消費(fèi)金額。至於折扣如下表所示:商品代碼商品
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年投資顧問(wèn)業(yè)務(wù)合同
- 2026年兒科保健服務(wù)合同
- 2026年菜品供貨合同
- 2025年人工智能數(shù)據(jù)分析平臺(tái)研發(fā)項(xiàng)目可行性研究報(bào)告
- 2025年在線零售平臺(tái)升級(jí)項(xiàng)目可行性研究報(bào)告
- 2025年網(wǎng)站建設(shè)與搜索引擎優(yōu)化的結(jié)合可行性研究報(bào)告
- 2025年人工智能助手應(yīng)用項(xiàng)目可行性研究報(bào)告
- 2025年清潔生產(chǎn)技術(shù)開發(fā)項(xiàng)目可行性研究報(bào)告
- 現(xiàn)簽協(xié)議再簽合同
- 消防備案合同范本
- 探索絲綢之路課件
- 2025秋季國(guó)開《經(jīng)濟(jì)學(xué)(本)》期末考試題庫(kù)及答案
- 2025國(guó)家開放大學(xué)《小學(xué)語(yǔ)文教學(xué)研究》形考任務(wù)1-5答案
- GB/T 148-1997印刷、書寫和繪圖紙幅面尺寸
- 各工序的協(xié)調(diào)措施施工方案
- GB∕T 1348-2019 球墨鑄鐵件-行業(yè)標(biāo)準(zhǔn)
- 硫化黑生產(chǎn)工藝
- 火力發(fā)電企業(yè)作業(yè)活動(dòng)風(fēng)險(xiǎn)分級(jí)管控清單(參考)
- 作物栽培學(xué)各論-玉米栽培
- 超濾膜技術(shù)介紹及應(yīng)用課件(PPT 36頁(yè))
- 【課件】第四單元主題三人居與環(huán)境——詩(shī)意的棲居課件-2021-2022學(xué)年高中美術(shù)人美版(2019)美術(shù)鑒賞
評(píng)論
0/150
提交評(píng)論