第5章+循環(huán)控制結(jié)構(gòu)程序設(shè)計(jì)_第1頁
第5章+循環(huán)控制結(jié)構(gòu)程序設(shè)計(jì)_第2頁
第5章+循環(huán)控制結(jié)構(gòu)程序設(shè)計(jì)_第3頁
第5章+循環(huán)控制結(jié)構(gòu)程序設(shè)計(jì)_第4頁
第5章+循環(huán)控制結(jié)構(gòu)程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、,第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì),C語言程序設(shè)計(jì)基礎(chǔ)教程,5.1 while語句 5.2 dowhile語句 5.3 for語句 5.4 循環(huán)的嵌套 5.5 幾種循環(huán)的比較 5.6 break和continue語句 5.7 程序舉例,循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu)之一,它的特點(diǎn)是,在給定條件成立時(shí),反復(fù)執(zhí)行某程序段,直到條件不成立為止。給定的條件稱為循環(huán)條件,反復(fù)執(zhí)行的程序段稱為循環(huán)體。語言提供了多種實(shí)現(xiàn)循環(huán)的語句,可以組成各種不同形式的循環(huán)結(jié)構(gòu)。 用while語句 用do-while語句 用for語句,while語句可以用來實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。 1)格式: while(表達(dá)式)語句 2)執(zhí)行

2、過程 其特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行語句。,5.1 while語句,【例5-1】用while語句求1100的累計(jì)和。 #includestdio.h main() int i=1,sum=0; while(i=100) sum=sum+i; i+; printf(%dn,sum); ,程序運(yùn)行結(jié)果如下: 5050,5.1 while語句,使用while語句應(yīng)注意以下幾點(diǎn): (1) while循環(huán)結(jié)構(gòu)的特點(diǎn)是“先判斷,后執(zhí)行”。如果表達(dá)式的值一開始為“假”,則循環(huán)體一次也不執(zhí)行。 (2) while語句中的表達(dá)式一般是關(guān)系表達(dá)式或邏輯表達(dá)式,只要表達(dá)式的值為真(非0)即可繼續(xù)循環(huán)。 (3) 為使

3、循環(huán)能夠正確開始運(yùn)行,需要對(duì)循環(huán)控制變量初始化。 (4) 循環(huán)體中,如果包含一個(gè)以上的語句,則應(yīng)用花括號(hào)括起來,構(gòu)成復(fù)合語句,否則while語句的范圍只到while后面第1個(gè)分號(hào)處。 (5) 循環(huán)體內(nèi)中應(yīng)有使循環(huán)趨向于結(jié)束的語句。,5.1 while語句,【例5-2】從鍵盤輸入30個(gè)學(xué)生的成績,對(duì)其進(jìn)行處理;如果成績及格,則輸出“Passed”,否則輸出“Failed”。 #includestdio.h main() int n=1; float score; while (n=30),5.1 while語句, printf(enter a score:n); scanf(%f, ,5.1 w

4、hile語句,dowhile語句可以用來實(shí)現(xiàn)“直到型”循環(huán)結(jié)構(gòu)。 1)格式: do 語句 while(表達(dá)式); 2)執(zhí)行過程 這個(gè)循環(huán)與while循環(huán)的區(qū)別在于,它先執(zhí)行后判斷,因此,do-while循環(huán)至少要執(zhí)行一次循環(huán)體。而while循環(huán)是先判斷后執(zhí)行,如果條件不滿足,則循環(huán)體語句一次也不執(zhí)行。,5.2 dowhile語句,【例5-3】用do-while語句求1100的累計(jì)和。 #includestdio.h main() int i=1,sum=0; do sum=sum+i; i+; while(i=100) ; printf(%dn,sum); ,程序運(yùn)行結(jié)果如下: 5050,5.

5、2 dowhile語句,使用do-while語句應(yīng)注意以下幾點(diǎn): (1) do是C語言的關(guān)鍵字,必須與while聯(lián)合使用。 (2) 在if語句、while語句中,表達(dá)式后面都不能加分號(hào),而在do-while語句的表達(dá)式后面必須加分號(hào),它表示do-while語句的結(jié)束,否則將產(chǎn)生語法錯(cuò)誤。 (3) while后面一對(duì)圓括號(hào)中的表達(dá)式,可以是C語言中任意合法的表達(dá)式。由它控制循環(huán)是否執(zhí)行。 (4) 和while語句一樣,在使用do-while語句時(shí),不要忘記初始化循環(huán)控制變量,否則執(zhí)行的結(jié)果將是不可預(yù)知的。 (5) 要在do-while語句的某處(表達(dá)式或循環(huán)體內(nèi))改變循環(huán)控制變量的值,否則極易構(gòu)

6、成死循環(huán)。 (6) 按照語法規(guī)則,在do和while之間的循環(huán)體只能是一條可執(zhí)行語句。若循環(huán)體內(nèi)需要多個(gè)語句,應(yīng)該用花括號(hào)括起來,組成復(fù)合語句。,5.2 dowhile語句,【例5-4】將輸入的一串字符顯示在屏幕上,遇到空格時(shí)停止。 #includestdio.h main() char c; printf(nPlease input a string:); do c=getchar(); putchar(c); while(c!= );,程序運(yùn)行結(jié)果如下: Please input a string:Homework in the school Homework,5.2 dowhile語句,

7、【例5-5】while語句和do-while語句的比較。 main( ) int s=0,n; scanf(%d, ,main( ) int s=0,n; scanf(%d, ,輸入: 1 結(jié)果: 55 輸入: 11 結(jié)果: 0,輸入: 1 結(jié)果: 55 輸入: 11 結(jié)果: 11,當(dāng)輸入i的值小于或等于10時(shí),兩者得到的結(jié)果相同。而當(dāng)i10時(shí),兩者結(jié)果不同。這是因?yàn)榇藭r(shí)對(duì)while循環(huán)來說,一次也不執(zhí)行循環(huán)體(表達(dá)式“i=100”為假),而對(duì)do-while循環(huán)語句來說,則要執(zhí)行一次循環(huán)體??梢缘玫浇Y(jié)論:當(dāng)while后面的表達(dá)式的第1次的值為“真”時(shí),兩種循環(huán)得到的結(jié)果相同,否則,兩者結(jié)果不

8、相同(指兩者具有相同的循環(huán)體的情況)。,5.2 dowhile語句,for語句是循環(huán)控制結(jié)構(gòu)中使用最廣泛的一種循環(huán)控制語句,特別適合用于已知循環(huán)次數(shù)的情況。 1)格式: for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句 2)執(zhí)行過程,5.3 for語句,【例5-6】用for語句求1100的累計(jì)和。 #includestdio.h main() int s=0,n=1; for(n=1;n=100;n+) s=s+n; printf(s=%dn,s); ,程序運(yùn)行結(jié)果如下: 5050,5.3 for語句,使用for語句應(yīng)注意以下幾點(diǎn): (1) for循環(huán)中的“表達(dá)式1(循環(huán)變量賦初值)”、“表達(dá)式2(

9、循環(huán)條件)”和“表達(dá)式3(循環(huán)變量增量)”都是選擇項(xiàng),即可以缺少,但“;”不能缺少。 (2) 省略了“表達(dá)式1(循環(huán)變量賦初值)”,表示不對(duì)循環(huán)控制變量賦初值。 (3) 省略了“表達(dá)式2(循環(huán)條件)”,則不做其他處理時(shí)便成為死循環(huán)。 (4) 省略了“表達(dá)式3(循環(huán)變量增量)”,則不對(duì)循環(huán)控制變量進(jìn)行操作,這時(shí)可在循環(huán)體中加入修改循環(huán)控制變量的語句。,5.3 for語句,使用for語句應(yīng)注意以下幾點(diǎn): (5) 省略了“表達(dá)式1(循環(huán)變量賦初值)”和“表達(dá)式3(循環(huán)變量增量)”。 (6) 3個(gè)表達(dá)式都可以省略。 (7) 表達(dá)式1可以是設(shè)置循環(huán)變量的初值的賦值表達(dá)式,也可以是其他表達(dá)式。 (8) 表

10、達(dá)式1和表達(dá)式3可以是簡單表達(dá)式,也可以是逗號(hào)表達(dá)式。 (9) 表達(dá)式2一般是關(guān)系表達(dá)式或邏輯表達(dá)式,但也可是數(shù)值表達(dá)式或字符表達(dá)式,只要其值非零,就執(zhí)行循環(huán)體。,5.3 for語句,【例5-7】輸出1001000之間同時(shí)能被4和6同時(shí)整除的數(shù)及其和。 #includestdio.h main() float s=0; int i; for(i=100;i=1000;i+) if(i%4=0,5.3 for語句,【例5-8】在3100之間所有3的倍數(shù)中,找出個(gè)位數(shù)為2的數(shù)。 #includestdio.h main() int i=0; for(i=3;i=100;i+) if(i%3=0 ,

11、5.3 for語句,程序運(yùn)行結(jié)果如下: 12 42 72,【例5-9】一個(gè)球從100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地時(shí),共經(jīng)過多少米?第10次反彈多高? #includestdio.h main() float sn=100.0,hn=sn/2; int n; for(n=2;n=10;n+),5.3 for語句, sn=sn+2*hn; hn=hn/2; printf(the total of road is %fn,sn); printf(the tenth is %f metern,hn); ,5.3 for語句,程序運(yùn)行結(jié)果如下: the tot

12、al of road is 299.609375 the tenth is 0.097656 meter,5.4 循環(huán)嵌套,一個(gè)循環(huán)的循環(huán)體中有另一個(gè)循環(huán)稱為循環(huán)嵌套。這種嵌套過程可以有很多重。 一個(gè)循環(huán)外面僅包圍一層循環(huán)稱為二重循環(huán);一個(gè)循環(huán)外面包圍兩層循環(huán)稱為三重循環(huán); 一個(gè)循環(huán)外面包圍多層循環(huán)稱為多重循環(huán)。 循環(huán)嵌套的層數(shù)理論上無限制。,在使用循環(huán)嵌套時(shí)應(yīng)注意以下幾點(diǎn): (1) 在嵌套的各層循環(huán)中,應(yīng)使用復(fù)合語句(即用一對(duì)花括號(hào)將循環(huán)體語句括起來),以保證邏輯上的正確性; (2) 內(nèi)層和外層循環(huán)控制變量不應(yīng)同名,以免造成混亂; (3) 嵌套循環(huán)最好采用右縮進(jìn)格式書寫,以保證層次的清晰性;

13、 (4) 循環(huán)嵌套不能交叉,即在一個(gè)循環(huán)體內(nèi)必須完整地包含另一個(gè)循環(huán)。 循環(huán)嵌套執(zhí)行時(shí),先由外層循環(huán)進(jìn)入內(nèi)層循環(huán),并在內(nèi)層循環(huán)終止之后接著執(zhí)行外層循環(huán),再由外層循環(huán)進(jìn)入內(nèi)層循環(huán)。當(dāng)外層循環(huán)全部終止時(shí),程序結(jié)束。,5.4 循環(huán)嵌套,【例5-11】打印九九乘法口訣表。 #includestdio.h main() int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%-3d,j,i,i*j); printf(n); ,程序運(yùn)行結(jié)果如下: 1*1= 1 1*2= 2 2*2=4 1*3= 3 2*3=6 3*3=9 1*4= 4 2*4=8 3

14、*4=12 4*4=16 ,5.4 循環(huán)嵌套,5.5 幾種循環(huán)的比較,幾種循環(huán)的比較如下: (1) 3種循環(huán)都可以用來處理同一個(gè)問題,一般可以互相代替。 (2) while和do-while循環(huán),循環(huán)體中應(yīng)包括使循環(huán)趨于結(jié)束的語句。for語句功能最強(qiáng)。 (3) 用while和do-while循環(huán)時(shí),循環(huán)變量初始化的操作應(yīng)在while和do-while語句之前完成,而for語句可以在表達(dá)式1中實(shí)現(xiàn)循環(huán)變量的初始化。 (4) while循環(huán)、do-while循環(huán)和for循環(huán),可以用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán)(break語句和continue語句見5.6節(jié))。,5.6

15、 break語句和continue語句, 5.6.1 break語句 當(dāng)break語句用于while、do-while、for循環(huán)語句中時(shí),可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語句。 1)格式: if(表達(dá)式)break; 2)執(zhí)行過程: while(表達(dá)式1) if(表達(dá)式2)break; ,【例5-14】讀入5個(gè)正整數(shù)并且顯示它們。當(dāng)程序讀入的數(shù)據(jù)為負(fù)數(shù)時(shí),程序立即終止。 #includestdio.h main() int i,n; for(i=1;i=5;i+) printf(please enter n:); scanf(%d, ,5.6 break語句和continue語句,程序運(yùn)行結(jié)

16、果如下: please enter n:10 n=10 Please enter n:-10 Program is over!,使用break語句應(yīng)注意以下幾點(diǎn): (1) break語句只能用于循環(huán)結(jié)構(gòu)或switch選擇結(jié)構(gòu)中。如果在程序中有下列語句: if() break; 則此時(shí)的if語句一定位于循環(huán)體中或switch語句中,break語句跳出的也不是if語句,而是跳出包含此if語句的循環(huán)體或switch語句。 (2) 由于循環(huán)語句的循環(huán)體部分還可以使用循環(huán)語句,這樣,循環(huán)語句就可以嵌套使用。在循環(huán)語句嵌套使用的情況下,break語句只能跳出(或終止)包含它的最近一層的循環(huán)體,而不能同時(shí)跳

17、出(或終止)多層循環(huán)。,5.6 break語句和continue語句, 5.6.2 continue語句 continue語句與break語句不同,當(dāng)在循環(huán)體中遇到continue語句時(shí),程序?qū)⑻^continue語句后面尚未執(zhí)行的語句,開始下一次循環(huán),即只結(jié)束本次循環(huán)的執(zhí)行,并不終止整個(gè)循環(huán)的執(zhí)行。 1)格式: if(表達(dá)式) continue; 2)執(zhí)行過程: while(表達(dá)式1) if(表達(dá)式2)continue; ,5.6 break語句和continue語句,【例5-16】求輸入的10個(gè)整數(shù)中正數(shù)的個(gè)數(shù)及其平均值。 #includestdio.h main() int i,a,nu

18、m=0; float sum=0; for(i=0;i10;i+) scanf(%d,5.6 break語句和continue語句,使用continue語句應(yīng)注意以下幾點(diǎn): (1) continue語句只能用于while、do-while、for構(gòu)成的循環(huán)結(jié)構(gòu)中,常與if條件語句一起使用,用來加速循環(huán)。 (2) 在嵌套循環(huán)的情況下,continue語句只對(duì)包含它的最內(nèi)層的循環(huán)體起作用。 continue語句和break語句的區(qū)別是:continue語句只結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)的執(zhí)行;而break語句則是結(jié)束整個(gè)循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立。,5.6 break語句和continue語句,5.7程序舉例,【例5-18】從鍵盤輸入一個(gè)大于1的任意正整數(shù),編程判斷它是否是素?cái)?shù),若是素?cái)?shù),輸出“Yes!”,

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論