版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第3章控制結(jié)構(gòu),返回總目錄,目錄,3.1程序結(jié)構(gòu)框圖,3.2二分支結(jié)構(gòu),3.3多分支結(jié)構(gòu),3.6習(xí)題三,3.4循環(huán)結(jié)構(gòu),3.5break與continue語句,返回總目錄,基本要求: )熟悉C語言的程序結(jié)構(gòu)框圖; )熟悉C語言的二分支結(jié)構(gòu)、多分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu); )熟練掌握結(jié)構(gòu)化程序設(shè)計(jì)方法。 學(xué)習(xí)重點(diǎn): )流程圖、N-S圖、循環(huán)結(jié)構(gòu); )結(jié)構(gòu)化程序設(shè)計(jì)方法。,3.1程序結(jié)構(gòu)框圖,3.1.1 自然語言描述,程序設(shè)計(jì)的關(guān)鍵是算法。 算法是實(shí)際問題求解步驟的描述。有了正確有效的算法,就可以用任何一種計(jì)算機(jī)語言編寫程序,解決各種問題。 算法可采用自然語言、流程圖或N-S圖等進(jìn)行描述。 自然語言描述:
2、用人們?nèi)粘K褂玫恼Z言(如英語、漢語)進(jìn)行算法的描述。,返回目錄,3.1程序結(jié)構(gòu)框圖,3.1.1 自然語言描述,例3.2求s=1+2+3+100之和。 解題思路要將1100累加到s變量上去,如果采用先初始化變量s=0,然后用語句序列s=s+1;s=s+2;則要重復(fù)寫100個(gè)加法賦值語句,很顯然,這種算法不可取。改用下述算法。 算法步驟: (1) 設(shè)s=0,n=0; (2) 變量n值加1,即n=n+1; (3) 將n加到變量s中,即s=s+n; (4) 如果n值小于100,返回去執(zhí)行第2步。否則執(zhí)行第5步; (5) 輸出s變量的值。,3.1程序結(jié)構(gòu)框圖,3.1.2 流程圖,流程圖是一種傳統(tǒng)的算法
3、描述方法, 它用幾種不同的幾何圖來代表不同性質(zhì)的操作; 用流程線來指示算法的執(zhí)行方向. 用流程圖表示的算法簡單直觀,容易轉(zhuǎn)化成相應(yīng)的語言程序。,3.1程序結(jié)構(gòu)框圖,3.1.2 流程圖,表示算法的開始或結(jié)束;,表示數(shù)據(jù)的輸入和輸出;在實(shí)際中輸入輸出也常用矩形框表示。,用來對(duì)給定的條件進(jìn)行判斷,根據(jù)條件成立與否來決定其后的操作,它有一個(gè)入口和兩個(gè)出口;,用來表示一般的數(shù)據(jù)處理;,表示算法執(zhí)行流程;,用來鏈接畫在不同地點(diǎn)的流程圖。,常用流程圖符號(hào),3.1程序結(jié)構(gòu)框圖,3.1.2 流程圖,例3.4 將例3.2中的算法用流程圖表示,如下圖所示。,3.1程序結(jié)構(gòu)框圖,3.1.3 NS圖,N-S圖是程序算法
4、的另一種圖形表示,它是由美國人I.Nassi和B.Shneiderman共同提出來的,其依據(jù)是:因?yàn)槿魏嗡惴ǘ际怯身樞蚪Y(jié)構(gòu)、分支(選擇)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)這三種結(jié)構(gòu)所組成,所以可以不需要各結(jié)構(gòu)之間的流程線,全部算法寫在一個(gè)矩形框內(nèi),矩形框內(nèi)由順序、選擇、循環(huán)三種結(jié)構(gòu)組成。,3.1程序結(jié)構(gòu)框圖,3.1.3 NS圖,3種基本結(jié)構(gòu)的NS圖,順序結(jié)構(gòu): 它是按照語句出現(xiàn)的先后順序依次執(zhí)行的。如上圖所示,先執(zhí)行A模塊,再執(zhí)行B模塊。,分支結(jié)構(gòu): 它是根據(jù)給定條件進(jìn)行判斷,選擇其中的一個(gè)分支執(zhí)行。如上圖所示,P表示條件,當(dāng)P成立時(shí)執(zhí)行分支A模塊,否則執(zhí)行分支B模塊。,當(dāng)型循環(huán): 當(dāng)條件滿足時(shí),重復(fù)執(zhí)行某一操作
5、。如上圖所示,當(dāng)條件P為“真”時(shí),反復(fù)執(zhí)行A模塊操作,直到P為“假”時(shí)才終止循環(huán),繼續(xù)執(zhí)行循環(huán)后面的語句。,直到型循環(huán): 它是先執(zhí)行循環(huán)體操作,再判斷條件,如果條件滿足,則繼續(xù)執(zhí)行循環(huán)體操作,直到條件不滿足時(shí),才退出循環(huán)。如上圖所示,首先執(zhí)行A模塊操作,然后再判斷給定的條件P是否成立,如果成立,反復(fù)執(zhí)行A模塊操作,直到條件P不成立。,3.1程序結(jié)構(gòu)框圖,3.1.3 NS圖,例3.6 將例3.2中的算法用N-S圖表示,如下圖所示。,3.1程序結(jié)構(gòu)框圖,3.1.4 結(jié)構(gòu)化程序設(shè)計(jì),結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是:任何程序都由順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)這三種基本結(jié)構(gòu)組成。 結(jié)構(gòu)化程序:由3種基本結(jié)構(gòu)經(jīng)
6、過反復(fù)組合、嵌套構(gòu)成的程序。 結(jié)構(gòu)化程序設(shè)計(jì)方法: 自頂向下,逐步細(xì)化 模塊化設(shè)計(jì) 結(jié)構(gòu)化編碼,3.1程序結(jié)構(gòu)框圖,3.1.4 結(jié)構(gòu)化程序設(shè)計(jì),結(jié)構(gòu)化程序設(shè)計(jì)具有以下特點(diǎn): 一個(gè)程序單元由順序、分支、循環(huán)這3種基本結(jié)構(gòu)組成。3種基本結(jié)構(gòu)經(jīng)過反復(fù)嵌套,可以表示任何復(fù)雜的算法。 一個(gè)大的程序由若干個(gè)不同功能的小模塊組成。 每個(gè)小模塊只有一個(gè)入口和一個(gè)出口。 程序中不能有無窮循環(huán)(死循環(huán))。 程序中不能有在任何條件下都執(zhí)行不到的語句(死語句)。 用結(jié)構(gòu)化思想設(shè)計(jì)出來的計(jì)算機(jī)程序,具有清晰的模塊界面,因此,在書寫程序時(shí),我們應(yīng)根據(jù)邏輯結(jié)構(gòu)和層次深度的不同,采用縮進(jìn)對(duì)齊的方式,將程序模塊寫在不同的位置,
7、這樣可以提高程序的可讀性,有助于調(diào)試程序,找出程序的邏輯錯(cuò)誤。,3.1程序結(jié)構(gòu)框圖,3.1.5 結(jié)構(gòu)化程序的語句,表達(dá)式語句:由“表達(dá)式分號(hào)”構(gòu)成。如賦值語句、函數(shù)調(diào)用語句。 空語句:只由一個(gè)分號(hào)構(gòu)成??照Z句執(zhí)行不產(chǎn)生任何動(dòng)作,常用于循環(huán)體中。 控制語句:完成一定的程序流程控制功能。如if-else,switch-case,for,while,do-while,break,continue,goto,return。 復(fù)合語句:由一對(duì)大括號(hào)括起來的一條或多條語句。被括起來的語句可以是這4類的任何一類語句,常用于函數(shù)體或循環(huán)體。,3.2二分支結(jié)構(gòu),3.2.1 二分支if語句,基本形式: if (表
8、達(dá)式) 語句1; else 語句2; 例如: if(xy) printf(“max=%d”,x); else printf(“max=%d”,y);,返回目錄,3.2二分支結(jié)構(gòu),3.2.1 二分支if語句,例3.7求兩個(gè)整數(shù)x、y中較大的數(shù),并賦給變量max。 解題思路x、y值由輸入函數(shù)輸入,根據(jù)其大小判斷,大的賦給max變量。其N-S圖如圖3.8所示,可以編寫如下程序。 #include main( ) int x,y, max; printf(Input x,y=); scanf(%d,%d, ,3.2二分支結(jié)構(gòu),3.2.2 不平衡if語句,基本形式: if (表達(dá)式) 語句; 例如: i
9、f(xy) printf(“max=%d”,x);,3.2二分支結(jié)構(gòu),3.2.2 不平衡if語句,例3.8設(shè)計(jì)一個(gè)程序,從鍵盤輸入3個(gè)整數(shù),按由小到大的順序輸出。 解題思路三個(gè)整數(shù)x、y、z,兩兩比較,始終保持x的值最小,z的值最大,不滿足此條件,則其值進(jìn)行交換?;鵑-S圖如圖3.10所示,可以編寫出程序如下: #include main( ) int x,y,z,temp; printf(Input x,y,z=); scanf(%d,%d,%d, ,3.2二分支結(jié)構(gòu),3.2.3 if語句的嵌套, 嵌套的一般形式,3.2二分支結(jié)構(gòu),3.2.3 if語句的嵌套,例3.11計(jì)算分段函數(shù)的值:,3
10、.2二分支結(jié)構(gòu),3.2.3 if語句的嵌套,#include #include main( ) float x,y; scanf(%f, ,例3.11計(jì)算分段函數(shù)的值:,if else 配對(duì)原則:缺省 時(shí),else總是和它上面離它最近的未配對(duì)的if配對(duì),3.2二分支結(jié)構(gòu),3.2.3 if語句的嵌套,通過“if語句的嵌套”可實(shí)現(xiàn)“多分支結(jié)構(gòu)”,3.2二分支結(jié)構(gòu),3.2.3 if語句的嵌套,示例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);,修改: if (a=b) if(b=c) printf(“a=b=c”); else pri
11、ntf(“a!=b”);,實(shí)現(xiàn)if else 正確配對(duì)方法:加 ,3.3多分支結(jié)構(gòu),3.3.1 多分支switch語句,if 語句的嵌套實(shí)現(xiàn)多分支: 如果分支較多,則嵌套的if語句層數(shù)就越多,程序不但冗長而且理解也比較困難。因此,C語言又提供了一種專門用于處理多分支結(jié)構(gòu)的條件選擇語句,稱為switch語句,又稱開關(guān)語句。,返回目錄,3.3多分支結(jié)構(gòu),3.3.1 多分支switch語句,switch語句(開關(guān)語句) 一般形式:,switch( 表達(dá)式) case 常量表達(dá)式1: 語句組 1; break; case常量表達(dá)式2: 語句組 2; break; . case常量表達(dá)式n: 語句組 n
12、; break; default: 語句組n+1 ; break; ,3.3多分支結(jié)構(gòu),3.3.1 多分支switch語句,switch語句(開關(guān)語句) 執(zhí)行過程:,說明: switch后面的表達(dá)式的值類型可以是整型、字符型或枚舉型。 當(dāng)表達(dá)式的值與某個(gè)case中的常量表達(dá)式的值相等時(shí),就執(zhí)行相應(yīng)的case后的語句序列,直到遇到break語句或到達(dá)switch結(jié)構(gòu)末尾。 多個(gè)連續(xù)的case語句可以共用一個(gè)語句序列。 case 后的不同常量表達(dá)式的值不能相等。 break的作用是改變程序在switch結(jié)構(gòu)中的執(zhí)行流程,將程序流程跳出switch語句,轉(zhuǎn)到switch語句后的下一條語句去執(zhí)行。 s
13、witch語句中允許嵌套switch語句。,3.3多分支結(jié)構(gòu),3.3.1 多分支switch語句,例3.14從鍵盤輸入一學(xué)生成績,判斷學(xué)生成績等級(jí)。如果成績?cè)?0100分,等級(jí)為“A”,成績?cè)?089分,等級(jí)為“B”,成績?cè)?079分,等級(jí)為“C”,成績?cè)?069分,等級(jí)為“D”,成績小于60分,等級(jí)為“E”。 main( ) int score;char grade; printf(“Input students score:”); scanf(“%d”,n=100;n+) s=s+n;,for語句的執(zhí)行過程 (1) 計(jì)算表達(dá)式1; (2) 計(jì)算表達(dá)式2,若其值為非0,則執(zhí)行第3步;若為0,
14、則轉(zhuǎn)向第6步執(zhí)行; (3) 執(zhí)行循環(huán)體; (4) 計(jì)算表達(dá)式3; (5) 跳轉(zhuǎn)到第2步繼續(xù)執(zhí)行; (6) 終止循環(huán),執(zhí)行for語句后的下一條語句。,3.4循環(huán)結(jié)構(gòu),3.4.1 for語句,例3.17例3.16用for語句實(shí)現(xiàn),程序如下: #include main( ) int s,n; for(s=0,n=1;n=100;n+) s=s+n; printf(“s=%dn”,s); ,3.4循環(huán)結(jié)構(gòu),3.4.1 for語句,for語句的說明,3.4循環(huán)結(jié)構(gòu),(1)在for語句中,若表達(dá)式1缺省,則必須將表達(dá)式1作為語句安排在for語句之前。,例3.17例3.16用for語句實(shí)現(xiàn),可以編寫如下程
15、序: #include main( ) int s,n; s=0; n=1; for( ; n=100; n+) s=s+n; printf(“s=%dn”,s); ,3.4.1 for語句,for語句的說明,3.4循環(huán)結(jié)構(gòu),(2)在for語句中,若表達(dá)式2缺省,則系統(tǒng)默認(rèn)循環(huán)控制條件為真(非0值),此時(shí),如果不在循環(huán)體中加其它語句進(jìn)行控制,循環(huán)將無限制進(jìn)行下去,即出現(xiàn)死循環(huán)。,例3.17例3.16用for語句實(shí)現(xiàn),可以編寫如下程序: #include main( ) int s,n; for(s=0,n=1;; n+) if(n100) break; s=s+n; printf(“s=%dn
16、”,s); ,3.4.1 for語句,for語句的說明,3.4循環(huán)結(jié)構(gòu),(3)在for語句中,若表達(dá)式3缺省,可將它的語句放在循環(huán)體的最后。,例3.17例3.16用for語句實(shí)現(xiàn),可以編寫如下程序: #include main( ) int s,n; for(s=0,n=1;n=100; ) s=s+n; n+; printf(“s=%dn”,s); ,3.4.1 for語句,for語句的說明,3.4循環(huán)結(jié)構(gòu),(4)在for語句中三個(gè)表達(dá)式都可以缺省,但其中的兩個(gè)分號(hào)不可省。,例3.17例3.16用for語句實(shí)現(xiàn),可以編寫如下程序: #include main( ) int s=0,n=1;
17、for(;) s=s+n; n=n+1; if(n100) break; printf(“s=%dn”,s); ,3.4.1 for語句,for語句的說明,3.4循環(huán)結(jié)構(gòu),(5)循環(huán)體可以為空語句,但必須有分號(hào)(即循環(huán)為空語句),例3.17例3.16用for語句實(shí)現(xiàn),可以編寫如下程序: #include main( ) int s,n; for(s=0,n=1;n=100;s=s+n,n+) ; printf(“s=%dn”,s); ,3.4.1 for語句,思考與練習(xí): 例3.16用for語句實(shí)現(xiàn),相應(yīng)的程序在前面已經(jīng)例舉了多種方法,請(qǐng)同學(xué)們?cè)囉闷渌赡艿姆椒ň帉懗绦颉?另外,例3.16還可
18、以用while語句、do-while語句、if+goto等方法實(shí)現(xiàn)。這說明,對(duì)于某個(gè)實(shí)際的編程問題,可以編寫出很多種程序來解決同一問題。所以,對(duì)我們初學(xué)者來說,關(guān)鍵是要多學(xué)習(xí)、勤練習(xí),熟則能生巧,到時(shí),編寫起程序來就游刃有余了! 加油吧!,3.4循環(huán)結(jié)構(gòu),3.4.1 for語句,for循環(huán)的3個(gè)例題及相關(guān)習(xí)題:,3.18判斷整數(shù)X是否為素?cái)?shù); 3.19從鍵盤輸入正整數(shù)X,Y,求最大公因子; 3.20求fibonacci數(shù)列的前二十項(xiàng); 3.18輸出7-1000中的素?cái)?shù)及其個(gè)數(shù); 3.18輸出1-1000中所有的同構(gòu)數(shù).,3.4循環(huán)結(jié)構(gòu),3.4.2 while語句,while語句的一般形式 wh
19、ile(表達(dá)式) 循環(huán)體; 例如: int n,s; n=1;s=0; while(n=100) s=s+n; n+; ,3.4循環(huán)結(jié)構(gòu),3.4.2 while語句,while語句的執(zhí)行過程 首先計(jì)算和判斷表達(dá)式的值,如果表達(dá)式的值為“真”(非0),則執(zhí)行循環(huán)體,然后程序轉(zhuǎn)回去再計(jì)算和判斷表達(dá)式的值,直到表達(dá)式的值為“假”(0),終止while循環(huán),繼續(xù)執(zhí)行while語句后的下一語句。,3.4循環(huán)結(jié)構(gòu),3.4.2 while語句,示例例3.16用while語句實(shí)現(xiàn),可以編寫如下程序: #include main( ) int s,n; s=0; n=1; while(n=100) s=s+n;
20、 n+; printf(“s=%dn”,s); ,3.4循環(huán)結(jié)構(gòu),3.4.3 dowhile語句,dowhile語句的一般形式 do 循環(huán)體; while(表達(dá)式) 例如: int n=1,s=0; do s=s+n; n+; while(n=100);,3.4循環(huán)結(jié)構(gòu),3.4.3 dowhile語句,dowhile語句的執(zhí)行過程 dowhile語句的作用是無條件地先執(zhí)行循環(huán)體一次(無論表達(dá)式的值是否為0或非0),所以又稱為“直到型循環(huán)”。循環(huán)體執(zhí)行一次后,計(jì)算和判斷表達(dá)式的值,若表達(dá)式的值為“真”(非0),則程序轉(zhuǎn)回去反復(fù)執(zhí)行循環(huán)體,直到表達(dá)式的值為“假”(0),終止dowhile語句,繼續(xù)
21、執(zhí)行dowhile語句后的下一條語句。,3.4循環(huán)結(jié)構(gòu),3.4.3 dowhile語句,示例例3.16用do-while語句實(shí)現(xiàn),可以編寫如下程序: #include main( ) int s,n; s=0; n=1; do s=s+n; n+; while(n=100); printf(“s=%dn”,s); ,3.4循環(huán)結(jié)構(gòu),3.4.4 循環(huán)嵌套,循環(huán)嵌套:指一個(gè)循環(huán)完全包含在另一個(gè)循環(huán)的循環(huán)體中。 while循環(huán)、dowhile循環(huán)和for循環(huán)都可以互相嵌套。 二重循環(huán)的執(zhí)行過程是外循環(huán)執(zhí)行一次,內(nèi)循環(huán)執(zhí)行一遍,直至內(nèi)循環(huán)結(jié)束后,才能再進(jìn)行一次外循環(huán),如此反復(fù),直到外循環(huán)結(jié)束。 內(nèi)、外
22、循環(huán)控制變量一般不能相同.,示例下面是for語句的二重循環(huán)嵌套程序,試分析其功能: #include main( ) 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),3.4.4 循環(huán)嵌套,3.4循環(huán)結(jié)構(gòu),3.4.4 循環(huán)嵌套,上例二重循環(huán)嵌套程序的執(zhí)行結(jié)果如下:,程序舉例:,3.23求n的平方和10000,n的最大值; 3.24求一個(gè)正數(shù)n(n65535)的逆序數(shù),1000內(nèi)回文; 求1000以內(nèi)的完數(shù),3.5.1 break語句,break語句的一般形
23、式 break; break語句經(jīng)常放在循環(huán)語句的循環(huán)體中,且通常和if語句一起使用。 作用:在滿足一定條件時(shí),提前退出本層循環(huán)(不管循環(huán)控制條件是否成立),使程序流程轉(zhuǎn)向該循環(huán)結(jié)構(gòu)后的下一條語句執(zhí)行。,3.5break、continue及goto語句,返回目錄,3.5.1 break語句,break語句的示例,例3.28求s=1+2+3+100之和。程序如下: #include main( ) int s=0,n=1; while(1) s=s+n; n+; if(n100) break; printf(“s=%dn”,s); ,在程序中,while循環(huán)的循環(huán)條件為1,是一死循環(huán),退出該循環(huán)
24、的辦法是在循環(huán)體中加一條件和break語句,滿足n100時(shí),即退出循環(huán)。,3.5break、continue及goto語句,3.5.2 continue語句,continue語句的一般形式 continue; continue語句經(jīng)常放在循環(huán)語句的循環(huán)體中。 作用:是結(jié)束本次循環(huán),即跳過循環(huán)體中某些還沒有被執(zhí)行的語句,開始新的一次循環(huán)。 與break比較: continue僅結(jié)束本次循環(huán),而break是結(jié)束整個(gè)循環(huán)語句的執(zhí)行。,3.5break、continue及goto語句,3.5.2 continue語句,continue語句的示例,例3.30從鍵盤輸入10個(gè)不為0的整數(shù),統(tǒng)計(jì)其中負(fù)數(shù)的個(gè)
25、數(shù),并求所有正數(shù)的平均值。 解題思路程序中count用于統(tǒng)計(jì)負(fù)數(shù)個(gè)數(shù),avg在循環(huán)結(jié)構(gòu)中用于統(tǒng)計(jì)正數(shù)和,循環(huán)結(jié)束后用于計(jì)算平均值.,#include main( ) int n,count=0,x; float avg=0; for(n=0;n0) avg=avg+x; continue; count+; if(count != 10)avg /=10-count; printf(“Count=%d,average=%fn”, count,avg); ,3.5break、continue及goto語句,3.5break、continue及goto語句,3.5.3 goto語句,goto語句的一
26、般形式 goto 語句標(biāo)號(hào); 作用:使程序的流程無條件轉(zhuǎn)移到相應(yīng)語句標(biāo)號(hào)處。 goto語句一般和if語句一起使用,構(gòu)成循環(huán)。 語句標(biāo)號(hào)是對(duì)語句的標(biāo)識(shí),應(yīng)是合法的標(biāo)識(shí)符,即只能由字母、數(shù)字和下劃線組成,且第一字符必須是字母或下劃線。注意:不能用一個(gè)整數(shù)作為語句標(biāo)號(hào)。 goto語句是非結(jié)構(gòu)化語句,大量使用會(huì)造成程序流向混亂,可讀性差,因此結(jié)構(gòu)化程序設(shè)計(jì)一般不用goto語句.,3.5break、continue及goto語句,3.5.3 goto語句,goto語句的示例,構(gòu)造當(dāng)型循環(huán)(先判斷循環(huán)控制條件),程序如下: #include main( ) int n=1,s=0; loop: if(n=
27、100) s=s+n; n+; goto loop; printf(“s=%dn”,s); ,例3.31求s=1+2+3+100之和。,構(gòu)造直到型循環(huán)(先執(zhí)行循環(huán)體1次,后判斷循環(huán)體控制條件),程序如下: #include main( ) int n=1,s=0; loop: s=s+n; n+; if(n=100) goto loop; printf(“s=%dn”,s); ,3.6習(xí)題三, 單項(xiàng)選擇題,結(jié)構(gòu)化程序模塊不具有的特征是. A)只有一個(gè)入口和一個(gè)出口 B)要盡量多使用goto語句 C)一般有順序、選擇和循環(huán)三種基本結(jié)構(gòu) D)程序中不能有死循環(huán) C語言中,邏輯“真”等價(jià)于. A)整
28、數(shù)1 B)整數(shù)0 C)非0數(shù)D)TRUE 3)以下4條語句中,有語法錯(cuò)誤的是. A)if(ab) m=a; B)if(a=0) m=a; D)if(a=b;)=0) m=a;,B,C,D,返回目錄,3.6習(xí)題三, 單項(xiàng)選擇題,4)若i, j均為整型變量,則以下循環(huán). for(i=0,j=2; j=1; i+,j-) printf(%5d, %dn, i, j); A)循環(huán)體只執(zhí)行一次B)循環(huán)體執(zhí)行二次 C)是無限循環(huán)D)循環(huán)條件不合法 5)以下程序段,執(zhí)行結(jié)果為. a=1; do a=a*a; while(!a); A)循環(huán)體只執(zhí)行一次B)循環(huán)體執(zhí)行二次 C)是無限循環(huán)D)循環(huán)條件不合法,C,
29、A,3.6習(xí)題三, 單項(xiàng)選擇題,6)C語言中while與dowhile語句的主要區(qū)別是. A)dowhile的循環(huán)體至少無條件執(zhí)行一次 B)dowhile允許從外部跳到循環(huán)體內(nèi) C)while的循環(huán)體至少無條件執(zhí)行一次 D)while的循環(huán)控制條件比dowhile的嚴(yán)格 7)語句while (!a);中條件等價(jià)于. A)a!=0 B)a C)a=1 D)a=0,A,D,3.6習(xí)題三, 單項(xiàng)選擇題,8)以下程序的運(yùn)行結(jié)果為. #include main( ) int i=1,sum=0; while(i=100) sum+=i; i+; printf(1+2+3+.+99+100=%d, sum
30、); A)5050B)1 C)0D)程序陷入死循環(huán),D,3.6習(xí)題三, 單項(xiàng)選擇題,9)以下程序的運(yùn)行結(jié)果為. #include main( ) int sum,pad; sum=pad=5; pad=sum+; pad+; +pad; printf(%dn, pad); A)7 B)6 C)5 D)4,A,3.6習(xí)題三, 單項(xiàng)選擇題,10)以下程序的運(yùn)行結(jié)果為. #include main( ) int a=2,b=10; printf(a=%d,b=%dn, a,b); A)a=%2,b=%10B)a=2,b=10 C)a=%d,b=%dD)a=%d,b=%d,D,3.6習(xí)題三, 單項(xiàng)選擇
31、題,11)為了避免嵌套的if-else語句的二義性,C語言規(guī)定else總是. A)與縮排位置相同的if組成配對(duì)關(guān)系 B)與在其之前未配對(duì)的if組成配對(duì)關(guān)系 C)與在其之前未配對(duì)的最近的if組成配對(duì)關(guān)系 D)與同一行上的if組成配對(duì)關(guān)系 12)對(duì)于for(表達(dá)式1; ;表達(dá)式3)可理解為. A)for(表達(dá)式1; 0 ;表達(dá)式3) B)for(表達(dá)式1; 1 ;表達(dá)式3) C)for(表達(dá)式1;表達(dá)式1;表達(dá)式3) D)for(表達(dá)式1;表達(dá)式3;表達(dá)式3),C,B,3.6習(xí)題三, 程序填空題,1下面程序的功能是計(jì)算n!。 #include main( ) int i, n; long p; p
32、rintf ( Please input a number:n ); scanf (%d, ,1,p=p*i;或p*=i;,3.6習(xí)題三, 程序填空題,2下面程序的功能是:從鍵盤上輸入若干學(xué)生的成績,統(tǒng)計(jì)并輸出最高和最低成績,當(dāng)輸入負(fù)數(shù)時(shí)結(jié)束輸入。 #include main ( ) float score, max, min; printf ( Please input one score:n ); scanf (%d, ,score=0,scoremin,3.6習(xí)題三, 程序填空題,3下面程序的功能是:計(jì)算y= 的值。要求從鍵盤上輸入x的值,精度控制在0.00001內(nèi)。 #include
33、#include main ( ) float x , y=0, fz=-1, fm=-1, temp=1; printf ( Please input the value of x:n ); scanf (%f, ,abs(temp)0.00001,-fz*x,3.6習(xí)題三, 程序填空題,4下面的程序完成兩個(gè)數(shù)的四則運(yùn)算。用戶輸入一個(gè)實(shí)現(xiàn)兩個(gè)數(shù)的四則運(yùn)算的表達(dá)式,程序采用switch語句對(duì)其運(yùn)算進(jìn)行判定后執(zhí)行相應(yīng)的運(yùn)算并給出結(jié)果。 #include main( ) float x,y; char op; printf(Please input Expression:); scanf(%f%c
34、%f,switch(op),x,op,y,x+y,break,3.6習(xí)題三, 程序填空題,case -: printf(%g%c%g=%gn,x,op,y,x-y); break; case *: printf(%g%c%g=%gn,x,op,y,x*y); break; case /: if (_) printf(Division Error!n); else printf(%g%c%g=%gn,x,op,y,x/y); break; default:printf(Expression Error!n); ,(y=-1e-6) break; case *: printf(%g%c%g=%gn
35、,x,op,y,x*y); break; case /: if (_) printf(Division Error!n); else printf(%g%c%g=%gn,x,op,y,x/y); break; default:printf(Expression Error!n); ,(y=-1e-6) scanf(%f,%f,%f, ,3.6習(xí)題三, 編程題,2輸入四個(gè)整數(shù),要求將它們按由小到大的順序輸出。,#include main( ) int a,b,c,d,t; scanf(%d,%d,%d,%d, ,3某幼兒園只收2至6歲的小孩,23歲編入小班,4歲編入中班,56歲編入大班,編制程序
36、實(shí)現(xiàn)每輸入一個(gè)年齡,輸出該編入什么班。,3.6習(xí)題三, 編程題,#include main( ) int age; scanf(%d, ,3.6習(xí)題三, 編程題,4輸入一元二次方程的三個(gè)系數(shù)a、b、c,求出該方程所有可能的根。,#include #include main( ) float a,b,c,d,x1,x2; scanf(%f,%f,%f,else if(d1e-6) x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(The equations root is ); printf(x1=%f,x2=%fn ,x1,x2); else
37、 x1=-b/(2*a); x2=sqrt(-d)/(2*a); printf(The equations root is %f+Ifn ,x1,x2); printf(The equations root is %f-I%fn ,x1,x2); ,3.6習(xí)題三, 編程題,4輸入一元二次方程的三個(gè)系數(shù)a、b、c,求出該方程所有可能的根。,3.6習(xí)題三, 編程題,5編程求s=1-1/2+1/3-1/4+ -1/100。,#include main( ) int n,flag=1; float s=0; for(n=1; n=100; n+) s=s+1.0*flag/n; flag=-flag;
38、 printf(fn,s); ,3.6習(xí)題三, 編程題,6編程求1!+2!+3!+10!之和。,#include main( ) long int s=0,p=1; int n; for(n=1; n=10; n+) p=p*n; s=s+p; printf(%ldn,s); ,3.6習(xí)題三, 編程題,7一個(gè)燈塔有8層,共有765盞燈,其中每一層的燈數(shù)都是其相鄰上層的兩倍,求最底層的燈數(shù)。,#include main( ) int s=1,n,p=1; for(n=1; n=7; n+) p=p*2; s=s+p; printf(%dn,765/s*p); ,3.6習(xí)題三, 編程題,8一張10元票面的紙鈔兌換成1元、2元或5元的票面,問共有多少種不同的兌換方法?,#include main( ) int a,b,c,sum=0; for(a=0; a=10; a+) for(b=0; b=5; b+) for(c=0; c=2; c+)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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年劇本殺運(yùn)營公司行業(yè)監(jiān)管對(duì)接管理制度
- 2026及未來5年中國郵票行業(yè)市場(chǎng)現(xiàn)狀調(diào)查及投資前景研判報(bào)告
- 2026年及未來5年中國數(shù)碼攝像機(jī)行業(yè)市場(chǎng)運(yùn)營現(xiàn)狀及投資規(guī)劃研究建議報(bào)告
- 2025年數(shù)字孿生技術(shù)在城市規(guī)劃中的創(chuàng)新報(bào)告
- 二手車產(chǎn)業(yè)技能培訓(xùn)課件
- 中國物聯(lián)網(wǎng)市場(chǎng)調(diào)研報(bào)告 202601
- 關(guān)于普陀區(qū)教育系統(tǒng)2026年公開招聘教師的備考題庫及一套完整答案詳解
- 2025至2030基因技術(shù)市場(chǎng)發(fā)展分析及前景趨勢(shì)與投融資發(fā)展機(jī)會(huì)研究報(bào)告
- 2025-2030中國電解高純鋁行業(yè)發(fā)展戰(zhàn)略及前景規(guī)劃分析研究報(bào)告
- 中國科學(xué)院西北高原生物研究所2026年第一批科研崗位招聘?jìng)淇碱}庫及1套完整答案詳解
- 廣東省深圳市龍華區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末歷史試題(含答案)
- 74粉色花卉背景的“呵護(hù)女性心理健康遇見更美的自己”婦女節(jié)女性健康講座模板
- 2026長治日?qǐng)?bào)社工作人員招聘勞務(wù)派遣人員5人備考題庫新版
- 煤礦兼職教師培訓(xùn)課件
- 2025至2030中國組網(wǎng)專線行業(yè)調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 2025年南京科技職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試模擬測(cè)試卷附答案
- 湖北省武漢市東湖新技術(shù)開發(fā)區(qū) 2024-2025學(xué)年七年級(jí)上學(xué)期期末道德與法治試卷
- 擋土墻施工安全培訓(xùn)課件
- (山東)通風(fēng)與空調(diào)工程施工資料表格大全(魯TK001-057)
- 大鵬新區(qū)保護(hù)與發(fā)展綜合規(guī)劃(2013-2020)
- 戰(zhàn)略成本1-6章toc經(jīng)典案例
評(píng)論
0/150
提交評(píng)論