![C語言程序的流程控制_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/26/646929f2-28f5-455d-becd-34c491e5d505/646929f2-28f5-455d-becd-34c491e5d5051.gif)
![C語言程序的流程控制_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/26/646929f2-28f5-455d-becd-34c491e5d505/646929f2-28f5-455d-becd-34c491e5d5052.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第3章C語言程序的流程控制 利用計算機(jī)進(jìn)行程序設(shè)計時,不僅僅只 處理一些簡單的數(shù)據(jù),在大部分的程序設(shè)計 里處理的問題還是相當(dāng)復(fù)雜的。 對于那些復(fù) 雜的程序設(shè)計,讀者不可能直接就能寫出程 序的源代碼,而是要通過一些具體的設(shè)計方 法(如用程序流程圖)把程序設(shè)計思想先寫 出來,然后根據(jù)程序流程圖編寫代碼。 本章 將具體介紹進(jìn)行程序設(shè)計時使用的基本方 法和C程序的流程控制。3.1程序設(shè)計的基本知識3.1.1程序流程圖在描述一個程序的基本結(jié)構(gòu)思想時有 很多種方法,其中 程序流程圖是最常用也是 最基本的方法 。1.傳統(tǒng)程序流程圖傳統(tǒng)流程圖表示法的特點(diǎn)是用一些 圖 框表示各種類型的操作,用 線表示這些操作
2、的執(zhí)行順序。美國國家標(biāo)準(zhǔn)化協(xié)會ANSI規(guī) 定了一些常用的流程圖符號,現(xiàn)已為世界各 國普遍采用。我國也有自己的國家標(biāo)準(zhǔn)GB 1526-89與該標(biāo)準(zhǔn)基本相同,本書就參照ANSI標(biāo)準(zhǔn)做具體介紹。 標(biāo)準(zhǔn)中各種圖示如 圖3.1所示。起止框輸入輸出框判斷框處理框或一o .匚流程線連接點(diǎn)注釋框圖 3.1 傳統(tǒng)流程圖表示法下面對其中一些主要符號作簡要說明:(1)起止框是用來標(biāo)識程序的開始和 結(jié)束位置的。規(guī)定流程圖以起止框開始,以 起止框結(jié)束。(2)輸入輸出框也叫數(shù)據(jù)框,其中可 以注明數(shù)據(jù)名稱、來源、用途或其它的文字 說明。(3)菱形框的作用是對一個給定的條 件進(jìn)行判斷,根據(jù)給定的條件是否成立來決 定如何執(zhí)行其
3、后的操作。(4)處理框用矩形表示各種處理功 能。例如,執(zhí)行一個或一組特定的操作,從 而使信息的值、信息的形式或所在位置發(fā)生 變化。另外在矩形框內(nèi)可注明特定處理名稱 或其簡要功能。(5)流程線用帶箭頭的直線表示程序 的執(zhí)行順序。 當(dāng)流程自左向右或自上向下時 流程線可以不帶箭頭,其它情況應(yīng)加箭頭表 示流程。(6)連接點(diǎn)用小圓圈表示將畫在不同 地方的流程線連接起來。下圖中有兩個以 為標(biāo)志的連接點(diǎn),它表示這兩個點(diǎn)是互聯(lián)在 一起的,實(shí)際它們是同一個點(diǎn)。這種連接通 常用在圖形畫不下而需要分開畫時。(7)注釋框不是流程圖的必要部分, 其不反映流程操作,只是為了流程圖中某些 操作做解釋補(bǔ)充的,以幫助閱讀流程圖
4、的人 更好的理解流程圖的作用。2. N-S流程圖靈活的流程線在程序設(shè)計中有它自己的 優(yōu)點(diǎn),但也隱藏著許多導(dǎo)致錯誤的禍根。因 為它允許用流程線使流程任意轉(zhuǎn)移,這對程 序設(shè)計是一個隱患,它使程序流程看起來很 亂,使程序難以理解和維護(hù)。 針對這一弊病,1973年美國學(xué)者I . Nassi和B . Shneiderman提出了一種 無流程線的流程圖, 稱為N-S圖。它的基本表示方法是用一個矩形框,把整個 程序算法像堆積木一樣組成。其基本結(jié)構(gòu)如 圖3.3、3.4、3.5、3.6所示。3.1.2程序的三種基本結(jié)構(gòu)結(jié)構(gòu)化的程序設(shè)計方法是面向過程的程 序設(shè)計的基本方法。1996年意大利Bobra和Jacopi
5、ni提出了三種基本程序結(jié)構(gòu)。已經(jīng)證 明,這三種算法可以解決任何復(fù)雜的問題。1順序結(jié)構(gòu)直到條件語句組P P 成立語句組 1 1語句3.循環(huán)結(jié)構(gòu)2 2(1)while循環(huán)結(jié)構(gòu)條件 P P真NS流程圖表示假構(gòu)流句組1語句組 2 2不成立當(dāng)條件 P P 成立語句組流程圖表示)當(dāng)型循環(huán)結(jié)木(N-SN-SJ J 流程圖hile循環(huán)結(jié)構(gòu)(傳統(tǒng)流程圖表示圖 3.33.3 順序結(jié)構(gòu) I I 流程圖兀成立不成立(N-SN-S 流程圖表示)圖 3.43.4 選擇結(jié)條件 P P成立(傳統(tǒng)流程圖表示)- .5.5語句組(2)dow例3.1畫出求s=1+2+3+100的傳 統(tǒng)流程圖和N-S流程圖。開始1賦值語句賦值語句由
6、賦值表達(dá)式加一個分號組成。例如:i = 1 ;2.函數(shù)調(diào)用語句函數(shù)調(diào)用語句由函數(shù)調(diào)用表達(dá)式后跟 一個分號組成。例如:strcpy( s1, stude nt, 4 );printf(good afternoonn );3.空語句 空語句是只有一個分號而沒有其他表i=1;i=1; s=0;s=0;i=100i圖 3.(2)表達(dá)式9真簡單 if 句流程圖.語句本ifelse格式:if(表達(dá)式)語句語句1; else語句2;句流程圖整數(shù),求其絕表達(dá)式假int x;printf( please enter a number: );scanf(%d,&x);if(xb) a+;b+; else
7、a=10; b=100;3.3.2switch語句一種用于多分支選擇的語句switch語句, 用該語句編寫的程序簡潔、易懂。而 且,其執(zhí)行效率要比同樣功能的階梯式ifelse ifelse語句要高的多。1. switch語句的一般形式switch語句的一般形式如下:switch(表達(dá)式)case常量表達(dá)式1:語句組1; case常量表達(dá)式2:語句組2;case常量表達(dá)式n:語句組n; default :語句組n+1;2. switch語句的執(zhí)行過程 系統(tǒng)首先計算“表達(dá)式”的值,并逐個 與其后的 “常量表達(dá)式” 的值相比較, 當(dāng)“表 達(dá)式”的值與某個“常量表達(dá)式”的值相等時,就以此作為程序執(zhí)行的
8、入口, 執(zhí)行switch結(jié)構(gòu)中后面的各語句。如果沒有任何一個case后面的“常量表達(dá)式”的值與表達(dá)式” 的值匹配,則執(zhí)行default后面的語句 (組)。 例3.6用switch語句實(shí)現(xiàn)例3.4的功能。# include main()int score;printf(please input score(0-100):); scanf(%d ,&score); /*從鍵盤輸入學(xué) 生成績*/switch(score/10);case 10:case 9:printf(excellentn);break;case8:pr i ntf(goodn); break;case 7:printf(
9、mediumn); break;case 6:printf(passn); break;default:printf(failn);3.4循環(huán)結(jié)構(gòu)程序設(shè)計C語言提供了循環(huán)控制的三種語句:while語句、dowhile循環(huán)語句和for循環(huán) 語句。3.4.1while語句while語句是一種條件循環(huán)結(jié)構(gòu), 其控 制結(jié)構(gòu)如下:wh i l e(條件表達(dá)式)循環(huán)體例3.7計算并輸出從1加到100的和:s =1+2+3+100。# includemain()int sum = 0 , i = 1;/*設(shè)置和與循環(huán)變量 */while(i=100) sum = sum+i;i+;printf( Sum=%
10、d , sum);程序執(zhí)行結(jié)果如下:The sum of 1 to 100 equalsis:50503.4.2dowhile循環(huán)語句dowhile結(jié)構(gòu)在C語言中用于實(shí)現(xiàn)“直 到型”循環(huán)。其一般形式為:do循環(huán)體while(條件表達(dá)式) ;例3.9用dowhile語句求1+2+3+100的和。# include main()int i=1 ,sum=0;do sum = sum+i;i+;while(imai n()int n, k;prin tf(Please in put a positive in teger:);sea nf( %d ,&n);printf( Number %d
11、 Factors:,n);for(k=1;k=n ;k+)if(n %k= =0)prin tf(%d,k);prin tf(n);程序某次的運(yùn)行結(jié)果如下:Please in put a positive in teger:36/Number 36 Factors:1234691218363.4.4循環(huán)嵌套一個循環(huán)體內(nèi)又可以包含另外一個完 整的循環(huán)結(jié)構(gòu),從而構(gòu)成多重循環(huán)結(jié)構(gòu), 這就是循環(huán)的嵌套。因此可以使用for3.4.5continue和break語句1. continue語句continue語句可以出現(xiàn)在循環(huán)體中,其 作用是結(jié)束本次循環(huán),但不退出循環(huán)結(jié)構(gòu)。 它跳過循環(huán)體中下面尚未執(zhí)行的語句
12、,直接 進(jìn)行下一次是否執(zhí)行循環(huán)的判定。例3.12輸出60600之間所有不能被9整除的數(shù)。# includemain()int m;for(m=60; m=600 ; m+)if(m%9= =0)continue ;printf(%dn,m);由這個程序可以看出, 當(dāng)某個自然數(shù)m被9整除時, 就利用continue語句結(jié)束本次 循環(huán)(其后的輸出語句不執(zhí)行) ,但不退出for循環(huán)結(jié)構(gòu),接著對下一個數(shù)進(jìn)行判斷。2. break語句break語句只能用在switch結(jié)構(gòu)或循環(huán) 結(jié)構(gòu),而不能用于其他結(jié)構(gòu)。但用在循環(huán)結(jié) 構(gòu)中時, 只能 跳出(或終止) 它所在的循環(huán) , 而不能同時跳出(或終止)多層循環(huán)。本
13、章小結(jié)從程序執(zhí)行的流程來看,程序可分為三 種最基本的結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)以及 循環(huán)結(jié)構(gòu)。本章從學(xué)習(xí)程序的流程圖畫法入 手系統(tǒng)的介紹了這三種基本結(jié)構(gòu)。程序中執(zhí)行部分最基本的單位是語句。 本章主要介紹了以下三種類型的語句:(1)表達(dá)式語句,任何表達(dá)式末尾加 上分號即可構(gòu)成表達(dá)式語句,常用的表達(dá)式 語句為賦值語句。(2)復(fù)合語句,由把多個語句括起 來組成一個語句。復(fù)合語句被認(rèn)為是單條語 句,它可出現(xiàn)在所有允許出現(xiàn)語句的地方, 如循環(huán)體等。(3)控制語句,用于控制程序流程, 由專門的語句定義符及所需的表達(dá)式組成。 主要有條件判斷執(zhí)行語句,循環(huán)執(zhí)行語句, 轉(zhuǎn)向語句等。C語言提供了多種形式的條件語句以構(gòu)成分支結(jié)構(gòu)。(1)if語句主要用于單向選擇。(2)ifelse語句主要用于雙向選擇。(3)ifelse ifelse語句和switch語 句用于多向選擇。這幾種形式的條件語句一般來說是可以互 相替代的。C語言提供了三
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國純棉棉襖行業(yè)投資前景及策略咨詢研究報告
- 2025年焊泥粉項(xiàng)目可行性研究報告
- 2025年槽式混合機(jī)項(xiàng)目可行性研究報告
- 2025年料流開關(guān)項(xiàng)目可行性研究報告
- 廣西2025年廣西民族大學(xué)招聘教職人員控制數(shù)人員28人筆試歷年參考題庫附帶答案詳解
- 2025至2031年中國單片微電腦繞線機(jī)控制器行業(yè)投資前景及策略咨詢研究報告
- 2025年制冷管項(xiàng)目可行性研究報告
- 2025至2031年中國CRP定量試劑盒行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年高真冷裱膜項(xiàng)目投資價值分析報告
- 2025至2030年中國閃光繼電器數(shù)據(jù)監(jiān)測研究報告
- (高清版)DB43∕T 1147-2015 太陽能果蔬烘干機(jī)
- 醫(yī)院人體器官捐獻(xiàn)及獲取流程
- 結(jié)腸造瘺還納手術(shù)配合
- 2024年云南省中考物理真題含解析
- 《安防監(jiān)控培訓(xùn)》課件
- 2025年中國艾草行業(yè)市場現(xiàn)狀、發(fā)展概況、未來前景分析報告
- (閩教版)六年級下英語教學(xué)計劃
- 人教版英語高考試卷與參考答案(2024年)
- 河砂、碎石生產(chǎn)質(zhì)量保證措施方案
- 全國教育科學(xué)規(guī)劃課題申報書:02.《鑄牢中華民族共同體意識的學(xué)校教育研究》
- 三位數(shù)除以兩位數(shù)過關(guān)練習(xí)口算題大全附答案
評論
0/150
提交評論