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

下載本文檔

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

文檔簡介

1、0102035.1 while循環(huán)5.2 do-while循環(huán)5.3 for循環(huán)第五章 循環(huán)結(jié)構(gòu)程序設(shè)計04055.4 循環(huán)嵌套5.5 break語句、continue語句065.6 知識點強化與應(yīng)用【學(xué)習(xí)要點】1.while語句、do-while語句、for語句的基本格式及應(yīng)用2.循環(huán)嵌套3.break語句、continue語句本章主要介紹實現(xiàn)循環(huán)結(jié)構(gòu)的3種循環(huán)語句、循環(huán)的嵌套,break語句,continue語句。希望大家能通過學(xué)習(xí)掌握循環(huán)結(jié)構(gòu)程序設(shè)計的思路和方法。在系統(tǒng)菜單的提示下,用戶輸入需要進(jìn)行操作的序號后,給出進(jìn)行操作的提示,接受用戶下次的操作輸入,直到輸入非法(1-8以外的數(shù)字)

2、后程序結(jié)束。【導(dǎo)入案例:多選擇的操作】可以使用上一章學(xué)習(xí)的選擇結(jié)構(gòu)來實現(xiàn)根據(jù)用戶輸入的序號進(jìn)行操作的提示。至于不斷地接受用戶的下次操作輸入直至輸入非法后程序結(jié)束功能采用順序結(jié)構(gòu)或選擇結(jié)構(gòu)顯然無法求解,該如何完成這種大量的重復(fù)的任務(wù)呢?如何實現(xiàn)在適當(dāng)?shù)臅r間退出程序呢?分析在程序設(shè)計中經(jīng)常會遇到這樣的情況,即有些語句只執(zhí)行一遍解決不了問題,必須重復(fù)執(zhí)行若干次才能完成任務(wù)。這種重復(fù)執(zhí)行結(jié)構(gòu)又稱為循環(huán)結(jié)構(gòu)?!窘鉀Q方案】系統(tǒng)菜單共有8個選項,用戶選擇不同的選項輸入,系統(tǒng)會給出相應(yīng)的操作提示,可以使用多分支選擇結(jié)構(gòu)語句:switch語句來實現(xiàn)。需要多次接受用戶的操作輸入并判斷,可在選擇結(jié)構(gòu)外加上循環(huán)結(jié)構(gòu)。

3、分析5.1.1 while語句的基本格式5.1.2 while語句的應(yīng)用5.1 while循環(huán)5.1.1 while語句的基本格式1、一般格式 while (表達(dá)式) 語句 或 while (表達(dá)式) 語句序列 其中,表達(dá)式稱為“循環(huán)繼續(xù)條件”,語句稱為“循環(huán)體”。5.1.1 while語句的基本格式(續(xù))2執(zhí)行過程(1)計算while后面表達(dá)式的值,如果其值為“真”,則執(zhí)行循環(huán)體;(2)執(zhí)行完語句后,再次計算while后面表達(dá)式的值,如果其值為“真”,則繼續(xù)執(zhí)行循環(huán)體,如果表達(dá)式的值為“假”,結(jié)束循環(huán),執(zhí)行循環(huán)結(jié)構(gòu)后面的語句。while循環(huán)的執(zhí)行流程如圖所示。循環(huán)體語句表達(dá)式Y(jié)N5.1.1

4、while語句的基本格式(續(xù))3、說明(1)表達(dá)式是循環(huán)的控制條件,決定著是否繼續(xù)循環(huán),可以是關(guān)系或邏輯表達(dá)式。(2)while語句的特點是先判斷循環(huán)的條件,再決定是否執(zhí)行循環(huán)體,如果表達(dá)式的值一開始就為“假”,那么循環(huán)體一次也不執(zhí)行。(3)循環(huán)體語句是循環(huán)中反復(fù)執(zhí)行的部分,可以是一條語句,也可以是復(fù)合語句(用大括號括起的若干語句)。(4)在循環(huán)中應(yīng)有使循環(huán)趨于結(jié)束的語句,以避免“死循環(huán)”的出現(xiàn)。5.1.2 while語句的應(yīng)用【例5-1】 編寫程序,計算1+2+3+100的和這是一個典型的循環(huán)結(jié)構(gòu)程序,可以定義兩個整型變量sun,i。其中sum為累加和,i為加數(shù),也為循環(huán)控制變量,如果i小于

5、或等于100,重復(fù)執(zhí)行加的操作,否則循環(huán)結(jié)束。5.1.2 while語句的應(yīng)用(續(xù))參考程序如下:#include void main()int i=1,sum=0; /初始化循環(huán)控制變量i和累加和sum while(i=100)/循環(huán)繼續(xù)條件 sum=sum+i;/實現(xiàn)累加i+;/循環(huán)控制變量增值 printf(sum=%dn,sum);程序運行結(jié)果如下: sum=50505.1.2 while語句的應(yīng)用(續(xù))【例5-3】從鍵盤上輸入若干正整數(shù),求這些數(shù)的總和及平均值。(輸入的數(shù)目不定,輸入-1時結(jié)束)。這是一個循環(huán)次數(shù)不確定的求和問題,但是循環(huán)結(jié)束條件可知5.1.2 while語句的應(yīng)用(

6、續(xù))參考程序如下:#include#define EOF -1void main( ) int x,i=0;float aver,sum=0;printf(Please input number:);scanf(%d,&x);while(x!=EOF)sum=sum+x;i+;scanf(%d,&x);aver=sum/i;printf(sum=%f,aver=%.2fn,sum,aver);程序運行結(jié)果如下:Please input number:5 6 7 8 9 -1sum=35.000000,aver=7.00提示(1)第10行表達(dá)式while(x!=EOF)能夠用表達(dá)式while(x

7、!=-)取代。但是,好的編程實踐要求使用符號常量并使它的名稱與應(yīng)用相關(guān)。(2)例5-1是循環(huán)次數(shù)確定,可采用計數(shù)法控制循環(huán),本例中循環(huán)次數(shù)不確定時,故采用標(biāo)志法,設(shè)法找出循環(huán)終止條件。5.2.1 do-while語句的基本格式5.2.2 do-while語句的應(yīng)用5.2 do-while循環(huán)5.2.1 do-while語句的基本格式1、一般格式 do 語句序列 while (表達(dá)式); 其中,表達(dá)式稱為“循環(huán)繼續(xù)條件”,語句稱為“循環(huán)體”。5.2.1 do-while語句的基本格式(續(xù))2執(zhí)行過程(1)執(zhí)行do后面的循環(huán)體語句;(2)計算while后面表達(dá)式的值,如果其值為“真”,則繼續(xù)執(zhí)行循

8、環(huán)體,如果表達(dá)式的值為“假”,結(jié)束循環(huán),執(zhí)行循環(huán)結(jié)構(gòu)后面的語句。do-while循環(huán)的執(zhí)行流程如圖所示。循環(huán)體語句表達(dá)式Y(jié)N5.2.1 do-while語句的基本格式(續(xù))3、說明(1)while(表達(dá)式);本行的分號不能省略。(2)do-while語句的特點是先執(zhí)行循環(huán)體中的語句再判斷循環(huán)條件是否為真,如果表達(dá)式的值一開始就為“假”,則退出循環(huán),但循環(huán)體語句已被執(zhí)行一次,因此do-while循環(huán)結(jié)構(gòu)的循環(huán)體語句至少被執(zhí)行一次。(3)復(fù)合語句、避免死循環(huán)的要求同while循環(huán)。5.2.2 do-while語句的應(yīng)用【例5-4】編寫程序,計算1+2+3+100的和(用do-while語句實現(xiàn))這

9、是一個典型的循環(huán)結(jié)構(gòu)程序,可以定義兩個整型變量sun,i。其中sum為累加和,i為循環(huán)控制變量,首先為i,sum賦初值。執(zhí)行do-while語句時,先執(zhí)行循環(huán)體,重復(fù)執(zhí)行加的操作并將循環(huán)控制變量增值,然后再判斷循環(huán)控制變量是否超過100,如果沒有超過100,則繼續(xù)執(zhí)行循環(huán)體,否則循環(huán)結(jié)束。5.2.2 do-while語句的應(yīng)用(續(xù))參考程序如下:#include void main()int i=1,sum=0; do sum=sum+i;i+; while(i=100); printf(sum=%dn,sum);程序運行結(jié)果如下:sum=50505.2.2 do-while語句的應(yīng)用(續(xù))【

10、例5-5】 while循環(huán)和do-while循環(huán)的比較。(1)#include void main( ) int n=0;while(n+=1)printf(%dt,n); printf(%dn,n);程序運行結(jié)果如下:1 2 3(2)#include void main( )int n=0; doprintf(%dt,n);while(n+=1);printf(%dn,n);程序運行結(jié)果如下:0 1 2 35.2.2 do-while語句的應(yīng)用(續(xù))執(zhí)行到while語句時先判斷循環(huán)條件是否成立,再確定循環(huán)體語句:printf(%dt,n);是否執(zhí)行,本例中循環(huán)體共執(zhí)行兩次。執(zhí)行到do語句時,

11、先執(zhí)行一次循環(huán)體,即printf(%dt,n);再判斷循環(huán)條件是否成立以確定循環(huán)體語句是否繼續(xù)執(zhí)行。本例中循環(huán)體共執(zhí)行三次。do-while循環(huán)結(jié)構(gòu)與while循環(huán)結(jié)構(gòu)相比,循環(huán)體語句多執(zhí)行一次。通過比較發(fā)現(xiàn)兩語句的主要區(qū)別是:while語句是先判斷循環(huán)繼續(xù)條件,后執(zhí)行循環(huán)體,而do-while語句是先執(zhí)行一次循環(huán)體,后判斷循環(huán)繼續(xù)條件。5.2.2 do-while語句的應(yīng)用(續(xù))5.3.1 for語句的基本格式5.3.2 for語句的應(yīng)用5.3 for循環(huán)5.3.1 for語句的基本格式1、一般格式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體語句;5.3.1 for語句的基本格式(續(xù))說明:

12、(1)表達(dá)式1為賦初值表達(dá)式,一般為賦值表達(dá)式,也可以是其他表達(dá)式,用來對循環(huán)控制變量賦初值;(2)表達(dá)式2為循環(huán)條件表達(dá)式,一般為關(guān)系表達(dá)式或邏輯表達(dá)式,是控制循環(huán)繼續(xù)的條件;(3)表達(dá)式3為增值表達(dá)式,一般為賦值表達(dá)式或逗號表達(dá)式,用來修改循環(huán)變量的值以使得循環(huán)趨于結(jié)束;(4)循環(huán)體語句可以是一個語句或復(fù)合語句,也可以是空語句。5.3.1 for語句的基本格式(續(xù))2執(zhí)行過程(1)計算表達(dá)式1的值;(2)計算表達(dá)式2的值,如果其值為“真”,則執(zhí)行循環(huán)體,否則跳出循環(huán);(3)計算表達(dá)式3的值,轉(zhuǎn)回第(2)步重復(fù)執(zhí)行。整個for循環(huán)過程中,表達(dá)式1只計算一次,表達(dá)式2和表達(dá)式3則可能計算多次。

13、循環(huán)體可能多次執(zhí)行,也可能一次都不執(zhí)行。for語句的執(zhí)行過程如圖所示:循環(huán)體語句YN計算表達(dá)式2計算表達(dá)式1計算表達(dá)式3for語句的下一語句5.3.1 for語句的基本格式(續(xù))3、關(guān)于for循環(huán)的討論(1)for語句中表達(dá)式1、表達(dá)式2、表達(dá)式3都可以省略,甚至3個表達(dá)式可同時省略,但起分隔作用的“;”不能省略。(2)若省略表達(dá)式1,即在for語句里不對循環(huán)變量賦初值,則應(yīng)該在for語句前給循環(huán)變量賦初值。例如:for(i=1;i=100;i+) sum=sum+i;等價于:i=1;for(;i100)break;/break語句為強制退出循環(huán)語句sum=sum+i;5.3.1 for語句的

14、基本格式(續(xù))(4)若省略表達(dá)式3,即不在此位置進(jìn)行循環(huán)變量的修改,則一定要在循環(huán)體語句中加入改變循環(huán)變量值的語句,使循環(huán)趨向結(jié)束。例如:for(i=1;i=100; )sum=sum+i;i+;5.3.1 for語句的基本格式(續(xù))(5)若省略表達(dá)式1和表達(dá)式3,例如:for( ;i=100; )sum=sum+i;i+; 等價于:while(i=100)sum=sum+i;i+;5.3.1 for語句的基本格式(續(xù))(6)三個表達(dá)式都可以省略,但“;”不能省略。例如:for( ; ; ) 等價于: while(1)5.3.2 for語句的應(yīng)用【例5-6】輸出50100之間不能被3整除的數(shù)。

15、將50100之間的數(shù)逐個判斷(判斷其能否被3整除,若不能,則輸出;否則,不處理)。設(shè)變量i表示待處理的數(shù),對i的判斷采用選擇結(jié)構(gòu)實現(xiàn),i不能被3整除的條件是“i%3!=0”。循環(huán)結(jié)構(gòu)的組成為:表達(dá)式1(給循環(huán)變量賦初值):i=50;表達(dá)式2(循環(huán)繼續(xù)條件):i=100;表達(dá)式3(循環(huán)變量的增值):i+;循環(huán)體:判斷i能否被3整除并進(jìn)行相應(yīng)的操作。5.3.2 for語句的應(yīng)用(續(xù))參考程序如下:#include void main()int i; /定義循環(huán)控制變量ifor(i=50;i=100;i+)if(i%3!=0)/循環(huán)體printf(%5d,i); 程序運行結(jié)果如下: 50 52 53

16、 55 56 58 59 61 62 64 65 67 68 70 71 73 74 76 77 79 80 82 83 85 86 88 89 91 92 94 95 97 98 100 一個循環(huán)體中又包含了另一個完整的循環(huán)結(jié)構(gòu),則稱為多重循環(huán)或循環(huán)的嵌套。在C語言中,while語句、do-while語句、for語句都可以相互嵌套,只要符合C語言的語法即可。5.4 循環(huán)嵌套5.4 循環(huán)嵌套(續(xù))【例5-8】 分析下列程序的運行結(jié)果及循環(huán)的執(zhí)行過程。#includevoid main()int i,j;float sum=0;for(i=1;i=5;i+)for(j=1;j=i;j+)prin

17、tf(*);printf(n);5.4 循環(huán)嵌套(續(xù))該程序為雙層的循環(huán)嵌套語句,輸出一個由“*”組成的直角三角形圖形,外循環(huán)i的變化規(guī)律為1、2、3、4,用于控制輸出圖形的行數(shù),內(nèi)循環(huán)j的變化規(guī)律為1i,用于控制每行輸出“*”的數(shù)量。i=1,j=1;i=2,j=12;i=3,j=13;i=4,j=14;i=5,j=15。每行輸出完后,加一個換行語句。程序運行結(jié)果為:* *5.5.1 break語句5.5.2 continue語句5.5 break語句、continue語句5.5.1 break語句break語句通常用在循環(huán)語句和switch語句中,當(dāng)break用于switch中時,可使程序跳

18、出switch結(jié)構(gòu)。當(dāng)break語句用于while、do-while、for循環(huán)語句中時,可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語句。語法:break;說明:(1)break語句可以改變程序的控制流。(2)break語句通常在循環(huán)中與條件語句一起使用。若條件值為真,將跳出循環(huán),控制流轉(zhuǎn)向循環(huán)后面的語句。(3)如果已執(zhí)行break語句,就不會執(zhí)行循環(huán)體中位于break語句后的語句。(4)在多層循環(huán)中,一個break語句只向外跳一層。5.5.1 break語句(續(xù))【例5-10】 統(tǒng)計從鍵盤輸入的若干個字符中有效字符的個數(shù),以換行符作為輸入結(jié)束。有效字符是指第一個空格符前面的字符,若輸入字符中沒有空格符

19、,則有效字符為除了換行符之外的所有字符。假設(shè)輸入的字符為ch,有效字符個數(shù)為count。先判斷ch是否為換行符,若不是,則判斷該字符是否為空格符,若不是空格符則把有效字符數(shù)count加1,若是空格符則程序終止循環(huán)。5.5.1 break語句(續(xù))參考程序如下:#includevoid main()int count=0,ch;printf(請輸入一行字符:);while(ch=getchar()!=n)if(ch= )break;count+;printf(n 共有 %d 個有效字符。n,count);程序運行結(jié)果為:請輸入一行字符:Hello world共有5個有效字符。5.5.2 cont

20、inue語句continue語句的作用是跳過循環(huán)體中剩余的語句而強行執(zhí)行下一次循環(huán)。continue語句只用在while、do-while、for等循環(huán)體中。語法:continue;說明:(1)continue 語句只能用在for、while、do-while等循環(huán)體中,常與if條件語句一起使用,用來終止本次循環(huán),提前進(jìn)入下一次循環(huán),從而加速整個循環(huán)過程。(2)對于while和do-while循環(huán),continue 語句執(zhí)行之后的動作是while中關(guān)于表達(dá)式的條件判斷;對于for循環(huán),隨后的動作是for(語句1;語句2;語句3)中關(guān)于語句3的變量更新。continue語句和break語句不同,它不終止循環(huán)的運行,而是結(jié)束本次循環(huán)。break語句則是強制終止整個循環(huán)過程。5.5.2 continue語句(續(xù))【例5-11】求輸入的10個整數(shù)中正數(shù)的個數(shù)及其平均值。假設(shè)從鍵盤輸入的整數(shù)為num,正數(shù)的個數(shù)為count,正數(shù)的總和為sum。若num0,則正數(shù)的個數(shù)n不增加且不計入總和,得重新輸入數(shù)據(jù);否則count的值加1,總和為:sum=sum+num。平均值為:sum/count。參考程序如下:#includevoid

溫馨提示

  • 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

提交評論