




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、比比培訓_C語言程序設(shè)計第五章 循環(huán)結(jié)構(gòu)程序設(shè)計比比培訓_C語言程序設(shè)計循環(huán)許多問題的求解歸結(jié)為重復執(zhí)行的操作,比如數(shù)值計算中的方程迭代求根,非數(shù)值計算中的對象遍歷。重復執(zhí)行就是循環(huán)。重復工作是計算機特別擅長工作之一。 重復的動作是受控制的,比如滿足一定條件繼續(xù)做,一直做直到某個條件滿足,做多少次結(jié)束。也就是說重復工作需要進行控制-循環(huán)控制。 比比培訓_C語言程序設(shè)計三種基本的循環(huán)結(jié)構(gòu) (1)while語句構(gòu)成的循環(huán)結(jié)構(gòu)(“當型循環(huán)”)(2)do-while語句構(gòu)成的循環(huán)結(jié)構(gòu)(“直到型循環(huán)”)(3)for語句構(gòu)成的循環(huán)結(jié)構(gòu)(“當型循環(huán)”) 比比培訓_C語言程序設(shè)計while語句(當型循環(huán))比比
2、培訓_C語言程序設(shè)計while循環(huán)的執(zhí)行流程 比比培訓_C語言程序設(shè)計注意事項 (1)while語句的特點是先計算表達式的值,然后根據(jù)表達式的值決定是否執(zhí)行循環(huán)體中的語句。因此,如果表達式的值一開始就為“假”,那么循環(huán)體一次也不執(zhí)行。(2)當循環(huán)體為多個語句組成,必須用括起來,形成復合語句。(3)在循環(huán)體中應有使循環(huán)趨于結(jié)束的語句,以避免“死循環(huán)”的發(fā)生。 比比培訓_C語言程序設(shè)計while循環(huán)應用舉例例6-1:利用while語句,編寫程序計算1+2+3+100。 比比培訓_C語言程序設(shè)計while循環(huán)應用舉例比比培訓_C語言程序設(shè)計do-while語句(直到型循環(huán))比比培訓_C語言程序設(shè)計執(zhí)
3、行流程 比比培訓_C語言程序設(shè)計說明 (1)do-while循環(huán),總是先執(zhí)行一次循環(huán)體,然后再求表達式的值,因此,無論表達式是否為“真”,循環(huán)體至少執(zhí)行一次。(2) do-while循環(huán)與while循環(huán)十分相似,它們的主要區(qū)別是:while循環(huán)先判斷循環(huán)條件再執(zhí)行循環(huán)體,循環(huán)體可能一次也不執(zhí)行。do-while循環(huán)先執(zhí)行循環(huán)體,再判斷循環(huán)條件,循環(huán)體至少執(zhí)行一次。 比比培訓_C語言程序設(shè)計說明(3)其它:復合語句,避免死循環(huán)要求同while循環(huán)。 (4)C語言沒有do-until(做直到條件滿足后循環(huán)停止),但是用do-while可以實現(xiàn)它,只要控制表達式為:!就可以了。 比比培訓_C語言程序
4、設(shè)計應用舉例比比培訓_C語言程序設(shè)計for語句(當型循環(huán))比比培訓_C語言程序設(shè)計for循環(huán)執(zhí)行過程 比比培訓_C語言程序設(shè)計for循環(huán)的執(zhí)行流程 比比培訓_C語言程序設(shè)計應用舉例比比培訓_C語言程序設(shè)計幾種循環(huán)的比較1、循環(huán)變量初始化:while和do-while循環(huán),循環(huán)變量初始化應該在while和do-while語句之前完成;而for循環(huán),循環(huán)變量的初始化可以在表達式1中完成。 2、循環(huán)條件:while和do-while循環(huán)只在while后面指定循環(huán)條件;而for循環(huán)可以在表達式2中指定。 比比培訓_C語言程序設(shè)計幾種循環(huán)的比較3、循環(huán)變量修改使循環(huán)趨向結(jié)束:while和do-while
5、循環(huán)要在循環(huán)體內(nèi)包含使循環(huán)趨于結(jié)束的操作;for循環(huán)可以在表達式3中完成。 4、for循環(huán)可以省略循環(huán)體,將部分操作放到表達式2,表達式3中,for語句功能強大。 比比培訓_C語言程序設(shè)計幾種循環(huán)的比較5、while和for循環(huán)先測試表達式,后執(zhí)行循環(huán)體,而do-while是先執(zhí)行循環(huán)體,再判斷表達式。(所以while,for循環(huán)是典型的當型循環(huán),而do-while循環(huán)可以看作是直到型循環(huán))。 比比培訓_C語言程序設(shè)計幾種循環(huán)的比較6、三種基本循環(huán)結(jié)構(gòu)一般可以相互替代,不能說哪種更加優(yōu)越。具體使用哪一種結(jié)構(gòu)依賴于程序的可讀性和程序設(shè)計者個人程序設(shè)計的風格(偏好)。我們應當盡量選擇恰當?shù)难h(huán)結(jié)構(gòu)
6、,使程序更加容易理解。(盡管for循環(huán)功能強大,但是并不是在任何場合都可以不分條件使用)。 比比培訓_C語言程序設(shè)計幾種循環(huán)的比較比比培訓_C語言程序設(shè)計break語句 break;break語句的一般形式為:break;break語句的執(zhí)行過程是:終止對switch語句或循環(huán)語句的執(zhí)行(跳出這兩種語句),而轉(zhuǎn)移到其后的語句處執(zhí)行。 比比培訓_C語言程序設(shè)計說明 1、break語句只用于循環(huán)語句或switch語句中。在循環(huán)語句中,break常常和if語句一起使用,表示當條件滿足時,立即終止循環(huán)。注意break不是跳出if語句,而是循環(huán)結(jié)構(gòu)。 比比培訓_C語言程序設(shè)計說明2、循環(huán)語句可以嵌套使用
7、,break語句只能跳出(終止)其所在的循環(huán),而不能一下子跳出多層循環(huán)。要實現(xiàn)跳出多層循環(huán)可以設(shè)置一個標志變量,控制逐層跳出。 比比培訓_C語言程序設(shè)計比比培訓_C語言程序設(shè)計應用舉例例6-10:從鍵盤上連續(xù)輸入字符,并統(tǒng)計其中大寫字母的個數(shù),直到輸入“換行”字符時結(jié)束。比比培訓_C語言程序設(shè)計continue語句 一般形式是 :continue;功能:結(jié)束本次循環(huán)。即跳過本層循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)條件的判定。注意:執(zhí)行continue語句并沒有使整個循環(huán)終止。注意與break語句進行比較。比比培訓_C語言程序設(shè)計break,continue主要區(qū)別 continue語
8、句只終止本次循環(huán),而不是終止整個循環(huán)結(jié)構(gòu)的執(zhí)行;break語句是終止循環(huán),不再進行條件判斷。 比比培訓_C語言程序設(shè)計break,continue主要區(qū)別比比培訓_C語言程序設(shè)計應用舉例例1:從鍵盤輸入一個大于2的整數(shù)n,判斷是不是素數(shù)。 素數(shù)定義:只能被1和它本身整除的數(shù)是素數(shù)。為了判斷一個數(shù)n是否為素數(shù),可以讓n除以2到n-1(實際上只要到sqrt(n))之間的每一個整數(shù),如果n能夠被某個整數(shù)整除,則說明n不是素數(shù),否則n是素數(shù)。 比比培訓_C語言程序設(shè)計實現(xiàn) 例2 譯密碼。為使電文保密,往往按一定規(guī)律將其轉(zhuǎn)換成密碼,收報人再按約定的規(guī)律將其譯回原文。例如,可以按以下規(guī)律將電文變成密碼:將
9、字母a變成字母E,a變成e,即變成其后的第4個字母,W變成a,X變成b,Y變成c,Z變成D。見圖5.15。字母按上述規(guī)律轉(zhuǎn)換,非字母字符不變。如“china!”轉(zhuǎn)換為“Glmre!” 。輸入一行字符,要求輸出其相應的密碼。圖5.15程序如下: #include main() char c; while(c=getchar()!=n) if(c=a & c=a & cZ & cz) c=c-26; printf(%c,c); 運行結(jié)果如下:china! Glmre!程序中對輸入的字符處理辦法是:先判定它是否大寫字母或小寫字母,若是,則將其值加4(變成其后的第4個字母)。如果加4以后字符值大于Z或
10、z,則表示原來的字母在V(或v)之后,應按圖5.15所示的規(guī)律將它轉(zhuǎn)換為aD(或ad)之一。辦法是使c減26,如果讀者對此還有疑問,請查ascII碼表即可清楚。還有一點請讀者注意:內(nèi)嵌的if語句不能寫成if(cZ| cz) c=c-26;因為當字母為小寫時都滿足“cZ”條件,從而也執(zhí)行“c=c-26;”語句,這就會出錯。因此必須限制其范圍為“cZ & cz & cz”即可。例3 用/41-13+15-17+公式求的近似值,直到最后一項的絕對值小于10-6為止。用N|S結(jié)構(gòu)化流程圖表示算法(見圖5.12)。圖圖5.125.12程序如下:#includemain()int s;float n,t,
11、Pi;t=1;Pi=0;n=1.0;S=1;while(fabs(t)1e-6)Pi=Pi+t; n=n+2; s=-s; t=S/n;Pi=Pi*4;printf(Pi=%10.6fn,Pi);運行結(jié)果為:Pi= 3.141594例4 求fibonacci數(shù)列40個數(shù)。這個數(shù)列有如下特點:第1,2兩個數(shù)為1,1。從第3個數(shù)開始,該數(shù)是其前面兩個數(shù)之和。即:f1=1 (n=1)f2=1 (n=2)fn=fn-1+fn-2 (n3)這是一個有趣的古典數(shù)學問題:有一對兔子,從出生后第3個月起每個月都生一對兔子。小兔子長到第3個月后每個月又生一對兔子。假設(shè)所有兔子都不死,問每個月的兔子總數(shù)為多少?解
12、此題的算法如圖5.13所示。 圖5.13程序如下:main() long int f1,f2; int i; f1=1;f2=1; for(i=1; i=20; i+) printf(%12ld %12ld ,f1,f2); if(i%2=0) printf(n); f1=f1+f2; f2=f2+f1; 運行結(jié)果為: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269
13、 2178309 3524578 57022887 9227465 14930352 24157817 39088169 63245986 102334155圖5.14程序中在printf函數(shù)中輸出格式符用“%12 ld”,而不是用“%12d”,這是由于在第23個數(shù)之后,整數(shù)值已超過整數(shù)最大值32767,因此必須用“%ld”格式輸出。if語句的作用是使輸出4個數(shù)后換行。i是循環(huán)變量,當i為偶數(shù)時換行,而i每增值1,就要計算和輸出2個數(shù)(f1,f2),因此i每隔2換一次行相當于每輸出4個數(shù)后換行輸出。例5.8判斷m是否素數(shù)。算法如圖5.14所示。我們采用的算法是這樣的:讓m被2到m 除,如果m能
14、被2m 之中任何一個整數(shù)整除,則提前結(jié)束循環(huán),此時i必然小于或等于k(即m);如果m不能被2k(即m)之間的任一整數(shù)整除,則在完成最后一次循環(huán)后,i還要加1,因此i=k+1,然后才終止循環(huán)。在循環(huán)之后判別i的值是否大于或等于k+1,若是,則表明未曾被2k之間任一整數(shù)整除過,因此輸出“是素數(shù)”。程序如下:#include main() int m,i,k; scanf(%d,&m); k=sqrt(m+1);/*加1是為了避免在求m時可能出現(xiàn)的誤差*/ for (i=2;i=k+1) printf(%d is a Prime mubern,m); else printf(%d is not a Prime numbern,m); 運行情況如下:1717 is a Prime number 例7 求100200間的全部素數(shù)。 在例5.8的基礎(chǔ)上,對本題用一個嵌套的for循環(huán)即可處理。程序如下:# include main() int m,k
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 門頭牌匾施工方案
- 物業(yè)管理培訓知識
- 排水溝疏浚施工方案
- 廚師工資協(xié)議合同范例
- 同行之間拿車合同范例
- 公益提供飲品合同范例
- 班級榮譽激勵制度的設(shè)立計劃
- 促進班級凝聚力的有效措施計劃
- 職業(yè)網(wǎng)絡(luò)拓展的策略計劃
- 生產(chǎn)計劃中的時間管理策略
- 2024年3月30日事業(yè)單位聯(lián)考A類《職業(yè)能力傾向測驗》試題
- 食堂從業(yè)人員晨午檢制度
- 現(xiàn)代家政導論-課件 2.1家庭的認知
- 護理相關(guān)法律法規(guī)
- 嬰幼兒窒息的預防與急救
- 【網(wǎng)紅李佳琦直播帶貨營銷策略問題及對策13000字(論文)】
- 2024中國移動公司招聘高頻500題難、易錯點模擬試題附帶答案詳解
- 江蘇省宿遷市2024年中考數(shù)學試卷含答案
- 河道綜合治理工程施工組織設(shè)計(投標)
- 處方書寫規(guī)范考核試題及答案
- 餐飲配方傳授合同范本
評論
0/150
提交評論