C語言程序設(shè)計第3章_第1頁
C語言程序設(shè)計第3章_第2頁
C語言程序設(shè)計第3章_第3頁
C語言程序設(shè)計第3章_第4頁
C語言程序設(shè)計第3章_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院 第第3 3章控制結(jié)構(gòu)章控制結(jié)構(gòu) 返回總目錄C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院目錄目錄 返回總目錄C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院基本要求:基本要求:)熟悉C語言的程序結(jié)構(gòu)框圖;)熟悉C語言的二分支結(jié)構(gòu)、多分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu);)熟練掌握結(jié)構(gòu)化程序設(shè)計方法。學(xué)習(xí)重點:學(xué)習(xí)重點:)流程圖、N-S圖、循環(huán)結(jié)構(gòu);)結(jié)構(gòu)化程序設(shè)計方法。C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.1程序結(jié)構(gòu)框圖程序結(jié)構(gòu)框圖自然語言描述自然語言描述 l 程序設(shè)計的關(guān)鍵是程序設(shè)計的關(guān)鍵是算法算

2、法。l 算法算法是實際問題求解步驟的描述是實際問題求解步驟的描述。有了正確有效的。有了正確有效的算法,就可以用任何一種計算機(jī)語言編寫程序,解算法,就可以用任何一種計算機(jī)語言編寫程序,解決各種問題。決各種問題。l 算法可采用算法可采用自然語言自然語言、流程圖流程圖或或N-SN-S圖圖等進(jìn)行描述。等進(jìn)行描述。 自然語言描述:用人們?nèi)粘K褂玫恼Z言自然語言描述:用人們?nèi)粘K褂玫恼Z言( (如英如英語、漢語語、漢語) )進(jìn)行算法的描述。進(jìn)行算法的描述。 返回目錄C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.1程序結(jié)構(gòu)框圖程序結(jié)構(gòu)框圖自然語言描述自然語言描述 例例3.23.2求求s=1

3、+2+3+100s=1+2+3+100之和。之和。解題思路解題思路要將要將11001100累加到累加到s s變量上去,如果采用先初始化變量上去,如果采用先初始化變量變量s=0s=0,然后用語句序列,然后用語句序列s=s+1s=s+1;s=s+2s=s+2;則要重復(fù)寫則要重復(fù)寫100100個個加法賦值語句,很顯然,這種算法不可取。改用下述算法。加法賦值語句,很顯然,這種算法不可取。改用下述算法。算法步驟:算法步驟:(1) (1) 設(shè)設(shè)s=0,n=0s=0,n=0;(2) (2) 變量變量n n值加值加1 1,即,即n=n+1n=n+1;(3) (3) 將將n n加到變量加到變量s s中,即中,即

4、s=s+ns=s+n;(4) (4) 如果如果n n值小于值小于100100,返回去執(zhí)行第,返回去執(zhí)行第2 2步。否則執(zhí)行第步。否則執(zhí)行第5 5步;步;(5) (5) 輸出輸出s s變量的值。變量的值。 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.1程序結(jié)構(gòu)框圖程序結(jié)構(gòu)框圖流程圖流程圖 流程圖是一種傳統(tǒng)的算法描述方法,流程圖是一種傳統(tǒng)的算法描述方法,l它用幾種不同的幾何圖來代表不同性質(zhì)的操作它用幾種不同的幾何圖來代表不同性質(zhì)的操作; ;l用流程線來指示算法的執(zhí)行方向用流程線來指示算法的執(zhí)行方向. .用流程圖表示的算法簡單直觀,容易轉(zhuǎn)化成相應(yīng)的語用流程圖表示的算法簡單直觀,容

5、易轉(zhuǎn)化成相應(yīng)的語言程序。言程序。C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.1程序結(jié)構(gòu)框圖程序結(jié)構(gòu)框圖流程圖流程圖 表示算法表示算法的開始或的開始或結(jié)束;結(jié)束;表示數(shù)據(jù)表示數(shù)據(jù)的輸入和的輸入和輸出;輸出;在在實際中輸實際中輸入輸出也入輸出也常用矩形常用矩形框表示??虮硎?。用來對給定的用來對給定的條件進(jìn)行判斷條件進(jìn)行判斷,根據(jù)條件成,根據(jù)條件成立與否來決定立與否來決定其后的操作,其后的操作,它有一個入口它有一個入口和兩個出口;和兩個出口;用來表用來表示一般示一般的數(shù)據(jù)的數(shù)據(jù)處理;處理;表示算表示算法執(zhí)行法執(zhí)行流程;流程;用來鏈用來鏈接畫在接畫在不同地不同地點的流點的流程圖。程

6、圖。常用流程圖符號C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.1程序結(jié)構(gòu)框圖程序結(jié)構(gòu)框圖流程圖流程圖 例例3.4 3.4 將例將例3.23.2中的算法用流程圖表示,如下圖所示。中的算法用流程圖表示,如下圖所示。C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.1程序結(jié)構(gòu)框圖程序結(jié)構(gòu)框圖N NS S圖圖 N-SN-S圖是程序算法的另一種圖形表示,它是由美圖是程序算法的另一種圖形表示,它是由美國人國人I.NassiI.Nassi和和B.ShneidermanB.Shneiderman共同提出來的,其依共同提出來的,其依據(jù)是:因為任何算法都是由順序結(jié)構(gòu)、分支據(jù)是:因

7、為任何算法都是由順序結(jié)構(gòu)、分支( (選擇選擇) )結(jié)構(gòu)、循環(huán)結(jié)構(gòu)這三種結(jié)構(gòu)所組成,所以可以不需結(jié)構(gòu)、循環(huán)結(jié)構(gòu)這三種結(jié)構(gòu)所組成,所以可以不需要各結(jié)構(gòu)之間的流程線,全部算法寫在一個矩形框要各結(jié)構(gòu)之間的流程線,全部算法寫在一個矩形框內(nèi),矩形框內(nèi)由順序、選擇、循環(huán)三種結(jié)構(gòu)組成。內(nèi),矩形框內(nèi)由順序、選擇、循環(huán)三種結(jié)構(gòu)組成。C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.1程序結(jié)構(gòu)框圖程序結(jié)構(gòu)框圖N NS S圖圖 3種基本結(jié)構(gòu)的NS圖順序結(jié)構(gòu):順序結(jié)構(gòu):它是按照語句它是按照語句出現(xiàn)的先后順出現(xiàn)的先后順序依次執(zhí)行的序依次執(zhí)行的。如上圖所示如上圖所示,先執(zhí)行,先執(zhí)行A A模模塊,再執(zhí)行塊,再執(zhí)

8、行B B模塊。模塊。 分支結(jié)構(gòu):分支結(jié)構(gòu):它是根據(jù)給定條件它是根據(jù)給定條件進(jìn)行判斷,選擇其進(jìn)行判斷,選擇其中的一個分支執(zhí)行中的一個分支執(zhí)行。如上圖所示,如上圖所示,P P表示條件,當(dāng)表示條件,當(dāng)P P成成立時執(zhí)行分支立時執(zhí)行分支A A模模塊,否則執(zhí)行分支塊,否則執(zhí)行分支B B模塊。模塊。 當(dāng)型循環(huán):當(dāng)型循環(huán):當(dāng)條件滿足時,重當(dāng)條件滿足時,重復(fù)執(zhí)行某一操作。復(fù)執(zhí)行某一操作。如上圖所示,當(dāng)條如上圖所示,當(dāng)條件件P P為為“真真”時,反時,反復(fù)執(zhí)行復(fù)執(zhí)行A A模塊操作,模塊操作,直到直到P P為為“假假”時才時才終止循環(huán),繼續(xù)執(zhí)終止循環(huán),繼續(xù)執(zhí)行循環(huán)后面的語句行循環(huán)后面的語句。 直到型循環(huán):直到型循

9、環(huán):它是先執(zhí)行循環(huán)體操作,再它是先執(zhí)行循環(huán)體操作,再判斷條件,如果條件滿足,判斷條件,如果條件滿足,則繼續(xù)執(zhí)行循環(huán)體操作,直則繼續(xù)執(zhí)行循環(huán)體操作,直到條件不滿足時,才退出循到條件不滿足時,才退出循環(huán)。環(huán)。如上圖所示,首先執(zhí)行如上圖所示,首先執(zhí)行A A模塊操作,然后再判斷給定模塊操作,然后再判斷給定的條件的條件P P是否成立,如果成立是否成立,如果成立,反復(fù)執(zhí)行,反復(fù)執(zhí)行A A模塊操作,直到模塊操作,直到條件條件P P不成立。不成立。 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.1程序結(jié)構(gòu)框圖程序結(jié)構(gòu)框圖N NS S圖圖 例例3.6 3.6 將例將例3.23.2中的算法用中的

10、算法用N-SN-S圖表示,如下圖所示。圖表示,如下圖所示。C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.1程序結(jié)構(gòu)框圖程序結(jié)構(gòu)框圖結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序設(shè)計 l 結(jié)構(gòu)化程序設(shè)計的基本思想是:任何程序都由順序結(jié)構(gòu)、結(jié)構(gòu)化程序設(shè)計的基本思想是:任何程序都由順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)這三種基本結(jié)構(gòu)組成。分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)這三種基本結(jié)構(gòu)組成。 l 結(jié)構(gòu)化程序:由結(jié)構(gòu)化程序:由3 3種基本結(jié)構(gòu)經(jīng)過反復(fù)組合、嵌套構(gòu)成的程種基本結(jié)構(gòu)經(jīng)過反復(fù)組合、嵌套構(gòu)成的程序。序。l 結(jié)構(gòu)化程序設(shè)計方法:結(jié)構(gòu)化程序設(shè)計方法:自頂向下,逐步細(xì)化自頂向下,逐步細(xì)化模塊化設(shè)計模塊化設(shè)計結(jié)構(gòu)化編碼結(jié)構(gòu)化編碼C

11、語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.1程序結(jié)構(gòu)框圖程序結(jié)構(gòu)框圖結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序設(shè)計 l 結(jié)構(gòu)化程序設(shè)計具有以下特點:結(jié)構(gòu)化程序設(shè)計具有以下特點:一個程序單元由順序、分支、循環(huán)這一個程序單元由順序、分支、循環(huán)這3 3種基本結(jié)構(gòu)組成。種基本結(jié)構(gòu)組成。3 3種基本種基本結(jié)構(gòu)經(jīng)過反復(fù)嵌套,可以表示任何復(fù)雜的算法。結(jié)構(gòu)經(jīng)過反復(fù)嵌套,可以表示任何復(fù)雜的算法。 一個大的程序由若干個不同功能的小模塊組成。一個大的程序由若干個不同功能的小模塊組成。每個小模塊只有一個入口和一個出口。每個小模塊只有一個入口和一個出口。程序中不能有無窮循環(huán)(死循環(huán))。程序中不能有無窮循環(huán)(死循環(huán))。

12、程序中不能有在任何條件下都執(zhí)行不到的語句(死語句)。程序中不能有在任何條件下都執(zhí)行不到的語句(死語句)。用結(jié)構(gòu)化思想設(shè)計出來的計算機(jī)程序,具有清晰的模塊界面,因用結(jié)構(gòu)化思想設(shè)計出來的計算機(jī)程序,具有清晰的模塊界面,因此,在書寫程序時,我們應(yīng)根據(jù)邏輯結(jié)構(gòu)和層次深度的不同,采此,在書寫程序時,我們應(yīng)根據(jù)邏輯結(jié)構(gòu)和層次深度的不同,采用縮進(jìn)對齊的方式,將程序模塊寫在不同的位置,這樣可以提高用縮進(jìn)對齊的方式,將程序模塊寫在不同的位置,這樣可以提高程序的可讀性,有助于調(diào)試程序,找出程序的邏輯錯誤。程序的可讀性,有助于調(diào)試程序,找出程序的邏輯錯誤。 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)

13、院3.1程序結(jié)構(gòu)框圖程序結(jié)構(gòu)框圖結(jié)構(gòu)化程序的語句結(jié)構(gòu)化程序的語句 表達(dá)式語句表達(dá)式語句: :由由“表達(dá)式分號表達(dá)式分號”構(gòu)成。如賦值語句、構(gòu)成。如賦值語句、函數(shù)調(diào)用語句。函數(shù)調(diào)用語句??照Z句:空語句:只由一個分號構(gòu)成??照Z句執(zhí)行不產(chǎn)生任何動只由一個分號構(gòu)成??照Z句執(zhí)行不產(chǎn)生任何動作,常用于循環(huán)體中。作,常用于循環(huán)體中??刂普Z句:控制語句:完成一定的程序流程控制功能。如完成一定的程序流程控制功能。如if-elseif-else,switch-caseswitch-case,forfor,whilewhile,do-whiledo-while,breakbreak,continuecontinue

14、,gotogoto,returnreturn。復(fù)合語句:復(fù)合語句:由一對大括號括起來的一條或多條語句。由一對大括號括起來的一條或多條語句。被括起來的語句可以是這被括起來的語句可以是這4 4類的任何一類語句,常用于函數(shù)類的任何一類語句,常用于函數(shù)體或循環(huán)體。體或循環(huán)體。 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.2二分支結(jié)構(gòu)二分支結(jié)構(gòu)二分支二分支ifif語句語句 基本形式:基本形式:if (表達(dá)式表達(dá)式) 語句語句1;else 語句語句2;例如:if(xy) printf(“max=%d”,x);else printf(“max=%d”,y);表達(dá)式表達(dá)式語句語句2假假(0

15、)真(非真(非0)語句語句1 返回目錄C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.2二分支結(jié)構(gòu)二分支結(jié)構(gòu)二分支二分支ifif語句語句 例例3.73.7求兩個整數(shù)求兩個整數(shù)x x、y y中較大的數(shù),并賦給變量中較大的數(shù),并賦給變量maxmax。解題思路解題思路x x、y y值由輸入函數(shù)輸入,根據(jù)其大小判斷,大的賦給值由輸入函數(shù)輸入,根據(jù)其大小判斷,大的賦給maxmax變量變量。其。其N-SN-S圖如圖圖如圖3.83.8所示,可以編寫如下程序。所示,可以編寫如下程序。#include#includemain( )main( ) int x,y, max; int x,y, ma

16、x; printf(Input x,y=); printf(Input x,y=); scanf(%d,%d,&x,&y); scanf(%d,%d,&x,&y); if(xy)if(xy)max=x; max=x; elseelsemax=y; max=y; printf(Max=%dn,max);printf(Max=%dn,max); C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.2二分支結(jié)構(gòu)二分支結(jié)構(gòu)不平衡不平衡ifif語句語句 基本形式:基本形式:if (表達(dá)式表達(dá)式) 語句;語句;例如:if(xy) printf(“max=%d”,

17、x);表達(dá)式表達(dá)式語句語句假(假(0)真(非真(非0)C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.2二分支結(jié)構(gòu)二分支結(jié)構(gòu)不平衡不平衡ifif語句語句 例例3.83.8設(shè)計一個程序,從鍵盤輸入設(shè)計一個程序,從鍵盤輸入3 3個整數(shù),按由小到大的順序輸出。個整數(shù),按由小到大的順序輸出。解題思路解題思路三個整數(shù)三個整數(shù)x x、y y、z z,兩兩比較,始終保持,兩兩比較,始終保持x x的值最小,的值最小,z z的值最的值最大,不滿足此條件,則其值進(jìn)行交換?;螅粷M足此條件,則其值進(jìn)行交換?;鵑-SN-S圖如圖圖如圖3.103.10所示,可以編寫出程所示,可以編寫出程序如下:序如下

18、:#includemain( ) int x,y,z,temp; printf(Input x,y,z=); scanf(%d,%d,%d,&x,&y,&z); if(xy) temp=x; x=y; y=temp; if(xz) temp=x; x=z; z=temp; if(yz) temp=y; y=z; z=temp; printf(%d,%d,%dn,x,y,z); C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.2二分支結(jié)構(gòu)二分支結(jié)構(gòu)ifif語句的嵌套語句的嵌套 if (expr1) if (expr2) statement1 else st

19、atement2else if(expr3) statement3 else statement4內(nèi)嵌內(nèi)嵌if內(nèi)嵌內(nèi)嵌ifif (expr1) if (expr2) statement1 else statement2內(nèi)嵌內(nèi)嵌ifif (expr1) if (expr2) statement1else statement3 內(nèi)嵌內(nèi)嵌ifif (expr1) statement1else if(expr3) statement3 else statement4內(nèi)嵌內(nèi)嵌if 嵌套的一般形式嵌套的一般形式C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院10sin101log10010 x

20、xxxexxyx3.2二分支結(jié)構(gòu)二分支結(jié)構(gòu)ifif語句的嵌套語句的嵌套 例例3.113.11計算分段函數(shù)的值:計算分段函數(shù)的值:C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.2二分支結(jié)構(gòu)二分支結(jié)構(gòu)ifif語句的嵌套語句的嵌套 #include #include main( )float x,y;scanf(%f,&x);if(x0) y=x;else if(x=1) y=exp(x); else if(x10) y=log10(x); else y=sin(x);printf(Y=%6.2fn,y); 例例3.113.11計算分段函數(shù)的值:計算分段函數(shù)的值:C語言程序

21、設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院l if if else else 配對原則:配對原則:缺省缺省 時,時,elseelse總是和總是和它上面離它最近的未配對的它上面離它最近的未配對的ifif配對配對if()if()if()else.else.else.3.2二分支結(jié)構(gòu)二分支結(jié)構(gòu)ifif語句的嵌套語句的嵌套 通過通過“ifif語句的嵌套語句的嵌套”可實現(xiàn)可實現(xiàn)“多分支結(jié)構(gòu)多分支結(jié)構(gòu)”C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.2二分支結(jié)構(gòu)二分支結(jié)構(gòu)ifif語句的嵌套語句的嵌套 示例:示例: if (a=b) if(b=c) printf(“a=b=c”);e

22、lse printf(“a!=b”);修改:修改: if (a=b) if(b=c) printf(“a=b=c”);else printf(“a!=b”);實現(xiàn)實現(xiàn)if else 正確配對方法:加正確配對方法:加 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.3多分支結(jié)構(gòu)多分支結(jié)構(gòu)多分支多分支switchswitch語句語句 l if if 語句的嵌套實現(xiàn)多分支語句的嵌套實現(xiàn)多分支: 如果分支較多,則嵌套的如果分支較多,則嵌套的ifif語句層數(shù)就越多,程語句層數(shù)就越多,程序不但冗長而且理解也比較困難。因此,序不但冗長而且理解也比較困難。因此,C C語言語言又提供了一種專門用

23、于處理多分支結(jié)構(gòu)的條件選又提供了一種專門用于處理多分支結(jié)構(gòu)的條件選擇語句,稱為擇語句,稱為switchswitch語句,又稱開關(guān)語句。語句,又稱開關(guān)語句。 返回目錄C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.3多分支結(jié)構(gòu)多分支結(jié)構(gòu)多分支多分支switchswitch語句語句 lswitchswitch語句語句(開關(guān)語句開關(guān)語句)一般形式:一般形式:switch( switch( 表達(dá)式表達(dá)式) ) case case 常量表達(dá)式常量表達(dá)式1: 1: 語句組語句組 1; break;1; break; case case常量表達(dá)式常量表達(dá)式2: 2: 語句組語句組 2; br

24、eak;2; break; . . case case常量表達(dá)式常量表達(dá)式n: n: 語句組語句組 n; break;n; break; default: default: 語句組語句組n+1 ; break;n+1 ; break; C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.3多分支結(jié)構(gòu)多分支結(jié)構(gòu)多分支多分支switchswitch語句語句 lswitchswitch語句語句(開關(guān)語句開關(guān)語句)執(zhí)行過程:執(zhí)行過程:switchswitch表達(dá)式表達(dá)式語句組語句組1 1語句組語句組2 2語句組語句組n n語句組語句組n+1n+1.defaultdefaultcasecas

25、e常量表達(dá)式常量表達(dá)式1 1 casecase常量表達(dá)式常量表達(dá)式2 2 casecase常量表達(dá)式常量表達(dá)式n n C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院l說明:說明: switchswitch后面的表達(dá)式的值類型可以是整型、字符型或枚后面的表達(dá)式的值類型可以是整型、字符型或枚舉型。舉型。 當(dāng)表達(dá)式的值與某個當(dāng)表達(dá)式的值與某個casecase中的常量表達(dá)式的值相等時,中的常量表達(dá)式的值相等時,就執(zhí)行相應(yīng)的就執(zhí)行相應(yīng)的casecase后的語句序列,直到遇到后的語句序列,直到遇到breakbreak語句或到語句或到達(dá)達(dá)switchswitch結(jié)構(gòu)末尾。結(jié)構(gòu)末尾。 多個連續(xù)的

26、多個連續(xù)的casecase語句可以共用一個語句序列。語句可以共用一個語句序列。 case case 后的不同常量表達(dá)式的值不能相等。后的不同常量表達(dá)式的值不能相等。 breakbreak的作用是改變程序在的作用是改變程序在switchswitch結(jié)構(gòu)中的執(zhí)行流程,結(jié)構(gòu)中的執(zhí)行流程,將程序流程跳出將程序流程跳出switchswitch語句,轉(zhuǎn)到語句,轉(zhuǎn)到switchswitch語句后的下一條語語句后的下一條語句去執(zhí)行。句去執(zhí)行。 switchswitch語句中允許嵌套語句中允許嵌套switchswitch語句。語句。 3.3多分支結(jié)構(gòu)多分支結(jié)構(gòu)多分支多分支switchswitch語句語句 C語言

27、程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院例例3.143.14從鍵盤輸入一學(xué)生成績,判斷學(xué)生成績等級。如果成績在從鍵盤輸入一學(xué)生成績,判斷學(xué)生成績等級。如果成績在9010090100分,等級為分,等級為“A”A”,成績在,成績在80898089分,等級為分,等級為“B”B”,成績在,成績在70797079分,分,等級為等級為“C”C”,成績在,成績在60696069分,等級為分,等級為“D”D”,成績小于,成績小于6060分,等級為分,等級為“E”E”。main( )main( ) int scoreint score;char gradechar grade; printf(“I

28、nput students scoreprintf(“Input students score:”) ); scanf(“%d”,&score)scanf(“%d”,&score); switch (score/10)switch (score/10) case 10 case 10: case 9case 9: grade=Agrade=A; breakbreak; case 8case 8: grade=Bgrade=B;breakbreak; case 7case 7: grade=Cgrade=C;breakbreak; case 6case 6: grade=Dgra

29、de=D;breakbreak; default default: grade=Egrade=E; printf(“The students grade is %cn”,grade) printf(“The students grade is %cn”,grade); 3.3多分支結(jié)構(gòu)多分支結(jié)構(gòu)多分支多分支switchswitch語句語句 表達(dá)式表達(dá)式score/10score/10的的值為值為1010和和9 9時共用時共用相同的語句序列。相同的語句序列。 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.3多分支結(jié)構(gòu)多分支結(jié)構(gòu)多分支結(jié)構(gòu)綜合舉例多分支結(jié)構(gòu)綜合舉例 例例3.153

30、.15計算分段函數(shù)的值:計算分段函數(shù)的值: )40(40)4020(205 . 0)2010(10)100()0(0 xxxxxxxxy 下面使用下面使用4種不同的方法實現(xiàn)該程序,以展現(xiàn)種不同的方法實現(xiàn)該程序,以展現(xiàn)C語言多語言多分支結(jié)構(gòu)的風(fēng)格。分支結(jié)構(gòu)的風(fēng)格。 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.3多分支結(jié)構(gòu)多分支結(jié)構(gòu)多分支結(jié)構(gòu)綜合舉例多分支結(jié)構(gòu)綜合舉例 (1) (1) 使用不嵌套的使用不嵌套的ifif語句編程:語句編程:#include #include main( )main( ) float x,yfloat x,y;scanf(“%f”,&x)sc

31、anf(“%f”,&x);if(x0)if(x0)y=0y=0;if(0=x&x10)if(0=x&x10)y=xy=x;if(10=x&x20)if(10=x&x20)y=10y=10;if(20=x&x40) if(20=x&x=40)if(x=40)y=40+xy=40+x;printf(“y=%5.2fn”,y)printf(“y=%5.2fn”,y); C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.3多分支結(jié)構(gòu)多分支結(jié)構(gòu)多分支結(jié)構(gòu)綜合舉例多分支結(jié)構(gòu)綜合舉例 (2) (2) 使用嵌套的使用嵌套的ifif語句編程:

32、語句編程:#include #include main( )main( ) float x,yfloat x,y;scanf(“%f”,&x)scanf(“%f”,&x);if(x=0)if(x=0) if(x=10)if(x=10) if(x=20)if(x=20) if (x=40)if (x=40)y=40+xy=40+x;else else y=0.5y=0.5* *x+20 x+20; else else y=10y=10; elseelsey=xy=x; else else y=0y=0;printf(“y=%5.2fn”,y)printf(“y=%5.2fn”,y

33、); C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.3多分支結(jié)構(gòu)多分支結(jié)構(gòu)多分支結(jié)構(gòu)綜合舉例多分支結(jié)構(gòu)綜合舉例 (3) (3) 使用使用ifelseifelse形式編程:形式編程:#include #include main( )main( ) float x,yfloat x,y;scanf(“%f”,&x)scanf(“%f”,&x);if(x0) if(x0) y=0y=0;else if(x10) else if(x10) y=xy=x; else if(x20)else if(x20)y=10y=10; else if(x40) else if(x4

34、0) y=0.5y=0.5* *x+20 x+20; else else y=40+xy=40+x;printf(“y=%5.2fn”,y)printf(“y=%5.2fn”,y); C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.3多分支結(jié)構(gòu)多分支結(jié)構(gòu)多分支結(jié)構(gòu)綜合舉例多分支結(jié)構(gòu)綜合舉例 (4) (4) 使用使用switchswitch語句編程:語句編程:#include #include main( )main( ) float x,y float x,y; int zint z; scanf(“%f”,&x)scanf(“%f”,&x); z=(int)(

35、x/10) z=(int)(x/10); if(x0) z= -1 if(x0) z= -1; switch (z) switch (z) case 1 case 1: y=0y=0; breakbreak; case 0case 0: y=xy=x; breakbreak; case 1case 1: y=10y=10; breakbreak; case 2case 2: case 3case 3: y=0.5y=0.5* *x+20 x+20;breakbreak; defaultdefault: y=40+xy=40+x; printf(“y=%5.2fn”,y) printf(“y=%

36、5.2fn”,y); C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院 返回目錄3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)引例引例 例例3.163.16求求s=1+2+3+100s=1+2+3+100之和。之和。解題思路設(shè)變量解題思路設(shè)變量s s存儲累加和,其初值為存儲累加和,其初值為0 0,變量,變量n n作為循環(huán)作為循環(huán)變量,其值由變量,其值由1 1變化到變化到100100,將,將n n的每一個值累加到的每一個值累加到s s變量,則可變量,則可以實現(xiàn)上述算法。以實現(xiàn)上述算法。(利用目前所學(xué)知識能編寫如下程序)(利用目前所學(xué)知識能編寫如下程序)#include #include main( )mai

37、n( ) int s=0,n=0int s=0,n=0;n=n+1n=n+1;s=s+ns=s+n;n=n+1n=n+1;s=s+ns=s+n;printf(“s=%dn”,s)printf(“s=%dn”,s); 在上例中,在上例中,n=n+1n=n+1;和;和s=s+ns=s+n;兩語句會在程序中;兩語句會在程序中反復(fù)出現(xiàn)反復(fù)出現(xiàn)100100次,使程序變次,使程序變得很長。為解決這一問題得很長。為解決這一問題,C C語言引入了循環(huán)結(jié)構(gòu)。語言引入了循環(huán)結(jié)構(gòu)。C C語言中實現(xiàn)循環(huán)結(jié)構(gòu)的語語言中實現(xiàn)循環(huán)結(jié)構(gòu)的語句有句有forfor語句、語句、whilewhile語語句和句和dowhiledowh

38、ile語句。語句。C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)forfor語句語句 lforfor語句的一般形式語句的一般形式for(表達(dá)式表達(dá)式1;表達(dá)式;表達(dá)式2;表達(dá)式;表達(dá)式3)循環(huán)體;循環(huán)體; 例如:例如:for(s=0,n=1;n=100;n+) s=s+n;C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院lforfor語句的執(zhí)行過程語句的執(zhí)行過程(1) (1) 計算表達(dá)式計算表達(dá)式1 1;(2) (2) 計算表達(dá)式計算表達(dá)式2 2,若其值為非,若其值為非0 0,則,則執(zhí)行第執(zhí)行第3 3步;若為步;若為0 0,則轉(zhuǎn)向第,則轉(zhuǎn)向第6

39、6步執(zhí)行;步執(zhí)行; (3) (3) 執(zhí)行循環(huán)體;執(zhí)行循環(huán)體; (4) (4) 計算表達(dá)式計算表達(dá)式3 3;(5) (5) 跳轉(zhuǎn)到第跳轉(zhuǎn)到第2 2步繼續(xù)執(zhí)行;步繼續(xù)執(zhí)行; (6) (6) 終止循環(huán),執(zhí)行終止循環(huán),執(zhí)行forfor語句后的下一語句后的下一條語句。條語句。 3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)forfor語句語句 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院例例3.173.17例例3.163.16用用forfor語句實現(xiàn),程序如下:語句實現(xiàn),程序如下: #include #include main( )main( ) int s,nint s,n;for(s=0,n=1for(s=

40、0,n=1;n=100n=100;n+)n+)s=s+ns=s+n;printf(“s=%dn”,s)printf(“s=%dn”,s); 3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)forfor語句語句 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院lforfor語句的說明語句的說明3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)(1)(1)在在forfor語句中,若表達(dá)式語句中,若表達(dá)式1 1缺省,則必須將表達(dá)式缺省,則必須將表達(dá)式1 1作為語作為語句安排在句安排在forfor語句之前。語句之前。 例例3.173.17例例3.163.16用用forfor語句實現(xiàn),可以編寫如下程序:語句實現(xiàn),可以編寫如下程序: #inclu

41、de #include main( )main( ) int s,n;int s,n;s=0; n=1s=0; n=1; for( ; n=100; n+)s=s+n;printf(“s=%dn”,s)printf(“s=%dn”,s); forfor語句語句 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院lforfor語句的說明語句的說明3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)(2)(2)在在forfor語句中,若表達(dá)式語句中,若表達(dá)式2 2缺省,則系統(tǒng)默認(rèn)循環(huán)控制條件缺省,則系統(tǒng)默認(rèn)循環(huán)控制條件為真(非為真(非0 0值),此時,如果不在循環(huán)體中加其它語句進(jìn)行控制值),此時,如果不在循環(huán)體中加其

42、它語句進(jìn)行控制,循環(huán)將無限制進(jìn)行下去,即出現(xiàn)死循環(huán)。,循環(huán)將無限制進(jìn)行下去,即出現(xiàn)死循環(huán)。 例例3.173.17例例3.163.16用用forfor語句實現(xiàn),可以編寫如下程序:語句實現(xiàn),可以編寫如下程序: #include #include main( )main( ) int s,n;int s,n;for(s=0,n=1s=0,n=1;; n+)if(n100) break;s=s+n;printf(“s=%dn”,s)printf(“s=%dn”,s); forfor語句語句 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院lforfor語句的說明語句的說明3.4循環(huán)結(jié)構(gòu)循環(huán)

43、結(jié)構(gòu)(3)(3)在在forfor語句中,若表達(dá)式語句中,若表達(dá)式3 3缺省,可將它的語句放在循環(huán)體缺省,可將它的語句放在循環(huán)體的最后。的最后。 例例3.173.17例例3.163.16用用forfor語句實現(xiàn),可以編寫如下程序:語句實現(xiàn),可以編寫如下程序: #include #include main( )main( ) int s,n;int s,n;for(s=0,n=1s=0,n=1;n=100n=100; )s=s+n;n+;printf(“s=%dn”,s)printf(“s=%dn”,s); forfor語句語句 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院lfor

44、for語句的說明語句的說明3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)(4)(4)在在forfor語句中三個表達(dá)式都可以缺省,但其中的兩個分號語句中三個表達(dá)式都可以缺省,但其中的兩個分號不可省。不可省。例例3.173.17例例3.163.16用用forfor語句實現(xiàn),可以編寫如下程序:語句實現(xiàn),可以編寫如下程序: #include #include main( )main( ) int s=0,n=1int s=0,n=1; for(;) s=s+n; n=n+1; if(n100) break; printf(“s=%dn”,s)printf(“s=%dn”,s); forfor語句語句 C語言程序設(shè)計電子教案

45、第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院lforfor語句的說明語句的說明3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)(5)(5)循環(huán)體可以為空語句,但必須有分號(即循環(huán)為空語句)循環(huán)體可以為空語句,但必須有分號(即循環(huán)為空語句) 例例3.173.17例例3.163.16用用forfor語句實現(xiàn),可以編寫如下程序:語句實現(xiàn),可以編寫如下程序: #include #include main( )main( ) int s,nint s,n;for(s=0,n=1for(s=0,n=1;n=100n=100;s=s+ns=s+n,n+)n+);printf(“s=%dn”,s)printf(“s=%dn”,s); forf

46、or語句語句 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院l思考與練習(xí):思考與練習(xí):例例3.163.16用用forfor語句實現(xiàn),相應(yīng)的程序在前面已經(jīng)例舉語句實現(xiàn),相應(yīng)的程序在前面已經(jīng)例舉了多種方法,請同學(xué)們試用其他可能的方法編寫程序。了多種方法,請同學(xué)們試用其他可能的方法編寫程序。另外,例另外,例3.163.16還可以用還可以用whilewhile語句、語句、do-whiledo-while語句、語句、if+gotoif+goto等方法實現(xiàn)。這說明,對于某個實際的編程問題等方法實現(xiàn)。這說明,對于某個實際的編程問題,可以編寫出很多種程序來解決同一問題。所以,對我們,可以編寫出很

47、多種程序來解決同一問題。所以,對我們初學(xué)者來說,關(guān)鍵是要多學(xué)習(xí)、勤練習(xí),熟則能生巧,到初學(xué)者來說,關(guān)鍵是要多學(xué)習(xí)、勤練習(xí),熟則能生巧,到時,編寫起程序來就游刃有余了!時,編寫起程序來就游刃有余了!加油吧!加油吧!3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)forfor語句語句 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)whilewhile語句語句 l while while語句的一般形式語句的一般形式while(while(表達(dá)式表達(dá)式) )循環(huán)體;循環(huán)體; 例如:例如:int n,s;int n,s;n=1;n=1;s=0;s=0;while(n=100)while(n=1

48、00) s=s+n;s=s+n;n+;n+; C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)whilewhile語句語句 l while while語句的執(zhí)行過程語句的執(zhí)行過程首先計算和判斷表達(dá)式的值,首先計算和判斷表達(dá)式的值,如果表達(dá)式的值為如果表達(dá)式的值為“真真”(非(非0 0),則執(zhí)行循環(huán)體,然后程序轉(zhuǎn)),則執(zhí)行循環(huán)體,然后程序轉(zhuǎn)回去再計算和判斷表達(dá)式的值,回去再計算和判斷表達(dá)式的值,直到表達(dá)式的值為直到表達(dá)式的值為“假假”(0 0),終止,終止whilewhile循環(huán),繼續(xù)執(zhí)行循環(huán),繼續(xù)執(zhí)行whilewhile語句后的下一語句。語句后的下一語句。 C

49、語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)whilewhile語句語句 示例例示例例3.163.16用用whilewhile語句實現(xiàn),可以編寫如下程序:語句實現(xiàn),可以編寫如下程序: #include #include main( )main( ) int s,n;int s,n;s=0; n=1s=0; n=1; while(n=100)s=s+n;n+;printf(“s=%dn”,s)printf(“s=%dn”,s); C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)whilewhile語句語句 l do dowhi

50、lewhile語句的一般形式語句的一般形式dodo 循環(huán)體;循環(huán)體; whilewhile(表達(dá)式)(表達(dá)式)例如:例如:int n=1,s=0;int n=1,s=0;dodo s=s+n;s=s+n;n+;n+;while(n=100);while(n=100);C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)whilewhile語句語句 l do dowhilewhile語句的執(zhí)行過程語句的執(zhí)行過程dodowhilewhile語句的作用是無條件語句的作用是無條件地先執(zhí)行循環(huán)體一次(無論表達(dá)式地先執(zhí)行循環(huán)體一次(無論表達(dá)式的值是否為的值是否為0 0或非或非

51、0 0),所以又稱為),所以又稱為“直到型循環(huán)直到型循環(huán)”。循環(huán)體執(zhí)行一次。循環(huán)體執(zhí)行一次后,計算和判斷表達(dá)式的值,若表后,計算和判斷表達(dá)式的值,若表達(dá)式的值為達(dá)式的值為“真真”(非(非0 0),則程序),則程序轉(zhuǎn)回去反復(fù)執(zhí)行循環(huán)體,直到表達(dá)轉(zhuǎn)回去反復(fù)執(zhí)行循環(huán)體,直到表達(dá)式的值為式的值為“假假”(0 0),終止),終止dodowhilewhile語句,繼續(xù)執(zhí)行語句,繼續(xù)執(zhí)行dodowhilewhile語語句后的下一條語句。句后的下一條語句。 C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)whilewhile語句語句 示例例示例例3.163.16用用do-wh

52、iledo-while語句實現(xiàn),可以編寫如下程序:語句實現(xiàn),可以編寫如下程序: #include #include main( )main( ) int s,n;int s,n;s=0; n=1s=0; n=1; dos=s+n;n+;while(n=100);printf(“s=%dn”,s)printf(“s=%dn”,s); C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) l 循環(huán)嵌套:循環(huán)嵌套:指一個循環(huán)完全包含在另一個指一個循環(huán)完全包含在另一個循環(huán)的循環(huán)體中。循環(huán)的循環(huán)體中。l whilewhile循環(huán)、循環(huán)、dodowhilewhile循環(huán)和循環(huán)

53、和forfor循環(huán)都循環(huán)都可以互相嵌套??梢曰ハ嗲短?。l 二重循環(huán)的執(zhí)行過程是外循環(huán)執(zhí)行一次,二重循環(huán)的執(zhí)行過程是外循環(huán)執(zhí)行一次,內(nèi)循環(huán)執(zhí)行一遍,直至內(nèi)循環(huán)結(jié)束后,才內(nèi)循環(huán)執(zhí)行一遍,直至內(nèi)循環(huán)結(jié)束后,才能再進(jìn)行一次外循環(huán),如此反復(fù),直到外能再進(jìn)行一次外循環(huán),如此反復(fù),直到外循環(huán)結(jié)束。循環(huán)結(jié)束。l 內(nèi)、外循環(huán)控制變量一般不能相同內(nèi)、外循環(huán)控制變量一般不能相同. . C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院示例下面是示例下面是forfor語句的二重循環(huán)嵌套程序,試分析語句的二重循環(huán)嵌套程序,試分析其功能:其功能: #include #include main( )main( )

54、 int i,j;int i,j; for(i=1;i=9;i+)for(j=1;j=i;j+)printf(“%d*%d=%dt”, i, j, i*j);printf(“n”); 3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.4循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 上例二重循環(huán)嵌套程序的執(zhí)行結(jié)果如下:上例二重循環(huán)嵌套程序的執(zhí)行結(jié)果如下:C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院 l break break語句的一般形式語句的一般形式 break;break; breakbreak語句經(jīng)常放在循環(huán)語句的語句經(jīng)常放在循環(huán)語句的循環(huán)體中,且通常和循環(huán)體中,

55、且通常和ifif語句一語句一起使用。起使用。 作用:在滿足一定條件時,提作用:在滿足一定條件時,提前退出本層循環(huán)(不管循環(huán)控前退出本層循環(huán)(不管循環(huán)控制條件是否成立),使程序流制條件是否成立),使程序流程轉(zhuǎn)向該循環(huán)結(jié)構(gòu)后的下一條程轉(zhuǎn)向該循環(huán)結(jié)構(gòu)后的下一條語句執(zhí)行。語句執(zhí)行。 3.5break、continue及及goto語句語句 返回目錄C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院 l break break語句的示例語句的示例例例3.283.28求求s=1+2+3+100s=1+2+3+100之和。程序如下:之和。程序如下:#include main( )int s=0,n=

56、1;while(1)s=s+n;n+;if(n100) break; printf(“s=%dn”,s);在程序中,在程序中,whilewhile循環(huán)的循環(huán)條件為循環(huán)的循環(huán)條件為1 1,是一死循環(huán),是一死循環(huán),退出該循環(huán)的辦法退出該循環(huán)的辦法是在循環(huán)體中加一是在循環(huán)體中加一條件和條件和breakbreak語句語句,滿足,滿足n100n100時,時,即退出循環(huán)。即退出循環(huán)。 3.5break、continue及及goto語句語句C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院 l continue continue語句的一般形式語句的一般形式 continue;continue; c

57、ontinuecontinue語句經(jīng)常放在循環(huán)語語句經(jīng)常放在循環(huán)語句的循環(huán)體中。句的循環(huán)體中。 作用:是結(jié)束本次循環(huán),即跳作用:是結(jié)束本次循環(huán),即跳過循環(huán)體中某些還沒有被執(zhí)行過循環(huán)體中某些還沒有被執(zhí)行的語句,開始新的一次循環(huán)。的語句,開始新的一次循環(huán)。 與與breakbreak比較:比較: continuecontinue僅結(jié)僅結(jié)束本次循環(huán),而束本次循環(huán),而breakbreak是結(jié)束整是結(jié)束整個循環(huán)語句的執(zhí)行。個循環(huán)語句的執(zhí)行。3.5break、continue及及goto語句語句C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院 l continue continue語句的示例語句

58、的示例例例3.303.30從鍵盤從鍵盤輸入輸入1010個不為個不為0 0的整的整數(shù),統(tǒng)計其中負(fù)數(shù)數(shù),統(tǒng)計其中負(fù)數(shù)的個數(shù),并求所有的個數(shù),并求所有正數(shù)的平均值。正數(shù)的平均值。解題思路程序解題思路程序中中countcount用于統(tǒng)計負(fù)用于統(tǒng)計負(fù)數(shù)個數(shù),數(shù)個數(shù),avgavg在循環(huán)在循環(huán)結(jié)構(gòu)中用于統(tǒng)計正結(jié)構(gòu)中用于統(tǒng)計正數(shù)和,循環(huán)結(jié)束后數(shù)和,循環(huán)結(jié)束后用于計算平均值用于計算平均值. .#include main( ) int n,count=0,x; float avg=0; for(n=0;n0) avg=avg+x; continue; count+; if(count != 10) avg /=1

59、0-count; printf(“Count=%d,average=%fn”, count,avg); 3.5break、continue及及goto語句語句C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.5break、continue及及goto語句語句 l goto goto語句的一般形式語句的一般形式: : goto goto 語句標(biāo)號語句標(biāo)號; ; 作用:使程序的流程無條件轉(zhuǎn)移到相應(yīng)語句標(biāo)號處。作用:使程序的流程無條件轉(zhuǎn)移到相應(yīng)語句標(biāo)號處。 gotogoto語句一般和語句一般和ifif語句一起使用,構(gòu)成循環(huán)。語句一起使用,構(gòu)成循環(huán)。 語句標(biāo)號是對語句的標(biāo)識,應(yīng)是合法的標(biāo)

60、識符,語句標(biāo)號是對語句的標(biāo)識,應(yīng)是合法的標(biāo)識符,即只能由即只能由字母、數(shù)字和下劃線組成,且第一字符必須是字母或下劃字母、數(shù)字和下劃線組成,且第一字符必須是字母或下劃線。線。注意:不能用一個整數(shù)作為語句標(biāo)號。注意:不能用一個整數(shù)作為語句標(biāo)號。 gotogoto語句是非結(jié)構(gòu)化語句語句是非結(jié)構(gòu)化語句,大量使用會造成程序流向混亂,大量使用會造成程序流向混亂,可讀性差,因此,可讀性差,因此結(jié)構(gòu)化程序設(shè)計一般結(jié)構(gòu)化程序設(shè)計一般不用不用gotogoto語句語句! C語言程序設(shè)計電子教案 第3章控制結(jié)構(gòu)湖南科技大學(xué)計算機(jī)學(xué)院3.5break、continue及及goto語句語句 l goto goto語句的示例語句的示例構(gòu)造當(dāng)型循環(huán)(先判斷循構(gòu)造當(dāng)型循環(huán)(先判斷循環(huán)控制條件),程序如下:環(huán)控制條件),程序如下:#include main( ) int n=1,s=0; loop:

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論