《C語言程序設(shè)計》 課件 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計_第1頁
《C語言程序設(shè)計》 課件 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計_第2頁
《C語言程序設(shè)計》 課件 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計_第3頁
《C語言程序設(shè)計》 課件 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計_第4頁
《C語言程序設(shè)計》 課件 第4章 循環(huán)結(jié)構(gòu)程序設(shè)計_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章循環(huán)結(jié)構(gòu)程序設(shè)計信息工程學(xué)院主講人:XXX內(nèi)容提要41

循環(huán)結(jié)構(gòu)程序舉例2while語句實現(xiàn)循環(huán)結(jié)構(gòu)423do-while語句實現(xiàn)循環(huán)結(jié)構(gòu)42for語句實現(xiàn)循環(huán)結(jié)構(gòu)45幾種循環(huán)結(jié)構(gòu)的比較244442循環(huán)的嵌套2427改變循環(huán)執(zhí)行的狀態(tài)424464.1循環(huán)結(jié)構(gòu)程序舉例首先,考慮這樣一個問題:在屏幕上依次輸出整數(shù)1~20,每兩個整數(shù)中間空一個格。使用順序結(jié)構(gòu),可以這樣解決這個問題:毫無疑問,這個程序的語法是正確的,編譯、運行后可解決問題。但是這并不是一個好的程序,因為這樣的程序有一定的局限性。如果題目要求輸出整數(shù)1~2000,那又該如何編寫呢?這時就可以運用循環(huán)結(jié)構(gòu)程序設(shè)計的思想。4.1循環(huán)結(jié)構(gòu)程序舉例在程序設(shè)計中,但凡是重復(fù)性的工作,都要想辦法用循環(huán)語句來實現(xiàn)。比如,在這個問題上,解決的思路就應(yīng)該是從輸出1開始,每次輸出一個比前一個數(shù)大1的整數(shù),重復(fù)循環(huán)20次。使用循環(huán)結(jié)構(gòu)來解決問題,首先要定義一個循環(huán)變量i,從1到20,循環(huán)剛好進(jìn)行20次。i的初值是1,當(dāng)i小于等于20時,循環(huán)結(jié)構(gòu)做兩件事:輸出i值,以及將i增加1。由于每次循環(huán)使i增加1,i將逐漸增加,增加到21時,便不再滿足i小于等于20的循環(huán)條件,則循環(huán)結(jié)束。4.1循環(huán)結(jié)構(gòu)程序舉例通過上述實例可知,在程序中僅僅使用順序結(jié)構(gòu)和選擇結(jié)構(gòu)是遠(yuǎn)遠(yuǎn)不夠的,還需要用到循環(huán)結(jié)構(gòu)。因為在日常生活中或者是處理程序問題時,經(jīng)常會出現(xiàn)許多需要重復(fù)處理的問題。在例4.1中,可以看到,使用循環(huán)結(jié)構(gòu)(如while語句)可以更加方便簡潔地輸出1~20的整數(shù)。雖然這個問題使用順序結(jié)構(gòu)也可以解決,但是使用順序結(jié)構(gòu)存在一個很大的弊端,那就是如果問題中需要輸出一個更大范圍的整數(shù),如1~20000,使用順序結(jié)構(gòu)程序就會非常冗長,工作量也會明顯增大,且不便于閱讀與維護(hù)。4.2while語句實現(xiàn)循環(huán)結(jié)構(gòu)

while語句的一般形式如下:

while(表達(dá)式)語句

while語句的功能:

首先計算表達(dá)式的值,如果表達(dá)式的值非零(真),那么執(zhí)行“語句”,然后再次計算表達(dá)式的值,重復(fù)執(zhí)行此過程,直到表達(dá)式的值為零(假),循環(huán)結(jié)束。重復(fù)執(zhí)行的語句稱為循環(huán)體,表達(dá)式稱為循環(huán)判別表達(dá)式。while語句的流程圖如圖4-3所示。4.2while語句實現(xiàn)循環(huán)結(jié)構(gòu)【例4.2】用while語句求1+2+3+…+100的值。算法分析:

(1)此題有一個明顯的特征,即重復(fù)執(zhí)行加法動作,是將100個數(shù)進(jìn)行累加的問題。那么就可以想到使用循環(huán)結(jié)構(gòu)來解決,通過循環(huán)執(zhí)行加法運算,執(zhí)行100次。(2)接下來分析累加的數(shù)值有什么變化規(guī)律。通過觀察,可以發(fā)現(xiàn)累加的數(shù)都有一個規(guī)律,就是后一個數(shù)等于前一個數(shù)加1。所以,可以在每次循環(huán)加法運算的同時,對累加的數(shù)進(jìn)行自加1操作,得到下一個數(shù)。

4.2while語句實現(xiàn)循環(huán)結(jié)構(gòu)流程圖:代碼如下:

4.2while語句實現(xiàn)循環(huán)結(jié)構(gòu)使用while語句時,需要注意以下問題。(1)循環(huán)次數(shù)的控制要正確。使用循環(huán)結(jié)構(gòu)時,可以通過循環(huán)變量來控制循環(huán)次數(shù),例4.1和例4.2都是通過循環(huán)變量i來控制循環(huán)次數(shù)的,前者是20次,后者是100次。(2)循環(huán)體包含一個以上的語句時,一定要用{}括起來,否則,程序只將第一條語句作為循環(huán)體。(3)在循環(huán)體內(nèi)要有使循環(huán)趨于結(jié)束的語句,否則,可能導(dǎo)致無限循環(huán)。4.3do-while語句實現(xiàn)循環(huán)結(jié)構(gòu)do-while語句的一般形式如下:while語句的功能:先執(zhí)行“語句”,再計算表達(dá)式的值。如果表達(dá)式的值為非零(真),繼續(xù)執(zhí)行“語句”,直到表達(dá)式的值為零(假),循環(huán)結(jié)束。流程圖:4.3do-while語句實現(xiàn)循環(huán)結(jié)構(gòu)注意:do-while語句與while語句的區(qū)別在于,do-while語句先執(zhí)行一次循環(huán)體,再進(jìn)行表達(dá)式的判斷,因此循環(huán)體中的語句至少要執(zhí)行一次。在設(shè)計程序時,如果不知道重復(fù)執(zhí)行的次數(shù),而且第一次必須執(zhí)行時,常采用do-while語句。理解了do-while語句與while語句之間的區(qū)別之后,可以將例4.1和例4.2采用do-while語句的形式進(jìn)行編寫。4.3do-while語句實現(xiàn)循環(huán)結(jié)構(gòu)【例4.3】用do-while語句解決“在屏幕上輸出整數(shù)1~20”的問題。4.3do-while語句實現(xiàn)循環(huán)結(jié)構(gòu)【例4.4】用do-while語句求1+2+3+…+100的值。4.3do-while語句實現(xiàn)循環(huán)結(jié)構(gòu)使用do-while語句時,需要注意以下問題。(1)為了避免誤讀,do-while語句的循環(huán)體中即使只有一條語句,也要用{}括起來。(2)使用do-while語句時切勿忘記while(表達(dá)式)后需要添加“;”。4.4for語句實現(xiàn)循環(huán)結(jié)構(gòu)for語句一般形式如下:流程圖:

4.4for語句實現(xiàn)循環(huán)結(jié)構(gòu)通過流程圖可以看出,for語句實際等價于下面的while語句:4.4for語句實現(xiàn)循環(huán)結(jié)構(gòu)for語句中,3個表達(dá)式的作用如下。表達(dá)式1:設(shè)置初始條件,只執(zhí)行一次??梢詾?個、1個或者多個變量設(shè)置初值。表達(dá)式2:是循環(huán)條件判別表達(dá)式,用來判斷是否繼續(xù)循環(huán)。每次執(zhí)行循環(huán)體前,先執(zhí)行此表達(dá)式,決定是否繼續(xù)執(zhí)行循環(huán)體。表達(dá)式3:作為循環(huán)中的調(diào)整,用來設(shè)置循環(huán)變量的變化方式并修改循環(huán)變量。因此,for語句的功能可以用下面的過程來描述。(1)計算表達(dá)式1。(2)計算表達(dá)式2,判斷表達(dá)式2是否為真,若為真,則執(zhí)行循環(huán)體中的“語句”,跳轉(zhuǎn)到(3)執(zhí)行。若為假,則循環(huán)結(jié)束,退出循環(huán)。(3)計算表達(dá)式3。(4)跳轉(zhuǎn)到(2)執(zhí)行。4.4for語句實現(xiàn)循環(huán)結(jié)構(gòu)【例4.5】用for語句求1+2+3+…+100的值。4.4for語句實現(xiàn)循環(huán)結(jié)構(gòu)使用for語句時,需要注意以下問題。(1)for循環(huán)中的表達(dá)式1(循環(huán)變量賦初值)、表達(dá)式2(循環(huán)條件)、表達(dá)式3(循環(huán)變量增量)都是選擇項,可以省略,但“;”不能省略。(2)省略表達(dá)式1(為循環(huán)變量賦初值),表示不對循環(huán)控制變量賦初值。(3)省略表達(dá)式2(循環(huán)條件),表示不對循環(huán)控制變量檢測,注意可能成為死循環(huán)。例如:for(i=1;;i++)sum=sum+i;相當(dāng)于:i=1;while(1){sum=sum+i;i++;}4.4for語句實現(xiàn)循環(huán)結(jié)構(gòu)4)省略表達(dá)式3(循環(huán)變量增量),則不對循環(huán)控制變量進(jìn)行修改,這時可在語句體中加入修改循環(huán)控制變量的語句。例如:for(i=1;i<=100;){sum=sum+i;i++;}(5)省略表達(dá)式1(為循環(huán)變量賦初值)和表達(dá)式3(循環(huán)變量增量)。例如:for(;i<=100;){sum=sum+i;i++;}相當(dāng)于:

while(i<=100) {sum=sum+i; i++;}4.4for語句實現(xiàn)循環(huán)結(jié)構(gòu)(6)3個表達(dá)式都省略。例如:for(;;)相當(dāng)于:while(1)(7)表達(dá)式1可以是設(shè)置循環(huán)變量初值的賦值表達(dá)式,也可以是其他表達(dá)式。例如:for(sum=0;i<=100;i++)sum=sum+i;(8)表達(dá)式1和表達(dá)式3可以是一個簡單表達(dá)式,也可以是逗號表達(dá)式。(9)表達(dá)式2一般是關(guān)系表達(dá)式或邏輯表達(dá)式,但也可是數(shù)值表達(dá)式或字符表達(dá)式,只要其值非零,就執(zhí)行循環(huán)體。例如:for(i=0;(c=getchar())!=’\n’;i+=c);又如:for(;(c=getchar())!=’\n’;)printf("%c",c);4.5幾種循環(huán)結(jié)構(gòu)的比較首先,3種循環(huán)結(jié)構(gòu)可以用來處理同一個問題,一般情況下,它們是可以相互替換的。但是,具體的語法結(jié)構(gòu)仍然有些不同,比如在while循環(huán)和do-while循環(huán)中,只在while后面的圓括號內(nèi)指定循環(huán)條件,若想要使循環(huán)能夠正常結(jié)束,避免出現(xiàn)死循環(huán)現(xiàn)象,則應(yīng)該在循環(huán)體中包含可以使循環(huán)趨于結(jié)束的語句(如i++,i??等)。但是for循環(huán)語句便無須此類操作,因為for語句中的表達(dá)式3就包含了使循環(huán)趨于結(jié)束的操作。在用while和do-while循環(huán)時,循環(huán)變量的初始化操作必須在while語句和do-while語句之前完成。而for語句可以在表達(dá)式1中實現(xiàn)循環(huán)變量的初始化。4.6循環(huán)結(jié)構(gòu)的嵌套循環(huán)的嵌套又稱多重循環(huán),就是在一個循環(huán)體內(nèi)包含另外一個循環(huán)體。3種循環(huán)結(jié)構(gòu)(while循環(huán)、do-while循環(huán)和for循環(huán)),不僅可以實現(xiàn)自身循環(huán)嵌套,還可以相互嵌套。下面,來看一下常見的幾種循環(huán)嵌套形式,如圖4-12所示。4.6循環(huán)結(jié)構(gòu)的嵌套幾種常見的循環(huán)嵌套形式:4.7改變循環(huán)執(zhí)行的狀態(tài)以上介紹的各種循環(huán)結(jié)構(gòu)的例子都是根據(jù)事先指定的循環(huán)條件正常執(zhí)行及終止的循環(huán)。但是在某種情況下,必須提前結(jié)束正在執(zhí)行的循環(huán)操作,又該如何處理呢?4.7.1break語句提前終止循環(huán)break語句在前面介紹switch語句時出現(xiàn)過,它也可以用于循環(huán)語句。break語句的語法格式為:break;break語句用于switch語句時,將直接跳出switch語句。break語句用于循環(huán)體時,將終止語句所在的循環(huán),從包含它的循環(huán)語句(while、do-while、for)中退出,執(zhí)行循環(huán)語句后的下一條語句。4.7.1break語句提前終止循環(huán)【例4.6】全系1000名學(xué)生進(jìn)行慈善募捐,當(dāng)總額達(dá)到10萬元時結(jié)束,統(tǒng)計此時捐款的人數(shù),以及平均每人捐款的數(shù)額。4.7.2continue語句提前結(jié)束本次循環(huán)循環(huán)結(jié)構(gòu)中不單單只有希望終止整個循環(huán)的操作,有時是希望可以提前結(jié)束當(dāng)前的循環(huán),而緊接著繼續(xù)執(zhí)行下一次循環(huán)操作。這時就需要用到continue語句。continue語句一般形式如下:continue;continue語句的功能:使continue語句所在的循環(huán)立即結(jié)束本輪循環(huán)而開始下一輪循環(huán)(即本次循環(huán)中continue后面的語句不再執(zhí)行)。continue語句用在while和do-while語句中與用在for語句中略有不同,在for語句中將終止本次循環(huán)體運行,但是仍要計算表達(dá)式3。4.7.2continue語句提前結(jié)束本次循環(huán)【例4.7】要求輸出100~200之間不能被3整除的數(shù)。4.7.3break語句和continue語句的區(qū)別根據(jù)以上分析可知,continue語句只結(jié)束本次循環(huán),而不終止整個循環(huán)。而break語句是終止整個循環(huán),不再執(zhí)行循環(huán)體。通過流程圖可以更加直觀地看到兩者之間的區(qū)別,如圖4-15所示。本章小結(jié)(1)while語句語法格式如下:while(表達(dá)式)語句執(zhí)行過程:先計算表達(dá)式的值,若值為真(非0),則執(zhí)行循環(huán)體語句,否則退出循環(huán)。(2)do-while語句語法格式如下:do語句while(表達(dá)式);執(zhí)行過程:先執(zhí)行一次循環(huán)體語句,然后判斷表達(dá)式的值,若值為真(非0),則繼續(xù)執(zhí)行循環(huán),否則終止循環(huán)。do-while語句的循環(huán)體至少被執(zhí)行一次。本章小結(jié)(3)for語句語法格式如下:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句執(zhí)行過

溫馨提示

  • 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

提交評論