第5章 循環(huán)程序設(shè)計.ppt_第1頁
第5章 循環(huán)程序設(shè)計.ppt_第2頁
第5章 循環(huán)程序設(shè)計.ppt_第3頁
第5章 循環(huán)程序設(shè)計.ppt_第4頁
第5章 循環(huán)程序設(shè)計.ppt_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 C語言程序設(shè)計,第 5 講,第5章循環(huán)程序設(shè)計,掌握C語言中while循環(huán)的用法。 掌握C語言中do-while循環(huán)的用法。 掌握C語言中for循環(huán)的用法。 能對for語句和while語句進行正確的轉(zhuǎn)換。 掌握并能熟練地運用循環(huán)的嵌套設(shè)計。,目標要求,第5章循環(huán)程序設(shè)計,while和do-while循環(huán) for循環(huán) 循環(huán)的嵌套 break語句與continue語句 for循環(huán)與while循環(huán)的轉(zhuǎn)換 典型例題評析 小結(jié) 課后作業(yè),講課提綱,第5章循環(huán)程序設(shè)計,5.2.1 while循環(huán) 5.2.2 do-while循環(huán) 5.2.3 while循環(huán)和do-while循環(huán)的比較,5.2 while

2、和do-while循環(huán),第5章循環(huán)程序設(shè)計,5.3.1 for語句的一般形式 5.3.2 for語句的殊形式,5.3 for循環(huán),第5章循環(huán)程序設(shè)計,5.5.1 break語句 5.5.2 continue語句,5.5 break語句與continue語句,第5章循環(huán)程序設(shè)計,while語句的格式: while(表達式) 語句(組) while語句的流程圖,5.2.1 while循環(huán),第5章循環(huán)程序設(shè)計,用法說明: 對于while語句的學(xué)習,應(yīng)注意以下幾點: 如果循環(huán)體包含1個以上的語句,即復(fù)合語句時,應(yīng)該用大括弧括起來,否則while語句的循環(huán)體只有1個語句,將會出現(xiàn)算法上的錯誤。 在循環(huán)體

3、內(nèi)必須有循環(huán)趨于結(jié)束的語句,否則將導(dǎo)致死循環(huán)。 在循環(huán)開始前,當循環(huán)條件不滿足時,while語句中的循環(huán)體將1次都不執(zhí)行。,5.2.1 while循環(huán),第5章循環(huán)程序設(shè)計,do-while循環(huán)的格式: do 循環(huán)體語句 while(表達式);,5.2.2 do-while循環(huán),第5章循環(huán)程序設(shè)計,do-while循環(huán)的執(zhí)行流程,5.2.2 do-while循環(huán),第5章循環(huán)程序設(shè)計,用法說明: 在使用do-while循環(huán)時應(yīng)注意以下幾個要點: 關(guān)鍵字“do”后無任何符號。 關(guān)鍵字“while”后的表達式要使用小括弧括起來,并且括弧外一定要添加分號“;”,否則將出現(xiàn)語法錯誤。 循環(huán)體中如果包含多條

4、語句,同樣應(yīng)該使用大括弧括起來作為一條復(fù)合語句,否則出現(xiàn)算法上的錯誤。 在循環(huán)體內(nèi)也必須有使循環(huán)趨于結(jié)束的語句。,5.2.2 do-while循環(huán),第5章循環(huán)程序設(shè)計,從形式上講,while語句要比do-while語句簡單些,while語句表達式的括弧外沒有“;”,而do-while語句表達式括弧外則有“;”。 在一般情況下,用while循環(huán)和do-while循環(huán)處理同一問題時,若兩者的循環(huán)體部分是一樣的,它們的結(jié)果也是一樣的。但是,如果while語句后面的表達式的值一開始就為假”時,兩種循環(huán)的結(jié)果是不同的。,5.2.3 while循環(huán)和do-while循環(huán)的比較,第5章循環(huán)程序設(shè)計,for循

5、環(huán)的基本格式: for(表達式1;表達式2;表達式3) 語句,5.3.1 for語句的一般形式,第5章循環(huán)程序設(shè)計,for循環(huán)的執(zhí)行流程圖:,5.3.1 for語句的一般形式,第5章循環(huán)程序設(shè)計,用法說明。 在使用for循環(huán)時,必須注意以下要點: for語句的圓括弧后沒有“;”如果在for語句的圓括弧后添加“;”雖然不會發(fā)生語法錯誤,但是此時的循環(huán)體將變?yōu)?個空語句,可能使程序不能獲得正確的結(jié)果。 “表達式1”、“表達式2”和“表達式3”通常稱為for循環(huán)的3個分量,均可以為任意表達式,相互之間使用“;”分開。for語句中的圓括弧內(nèi)有且只有兩個“;”,第3個表達式后沒有“;”。 3個表達式的用

6、途各不相同:“表達式1”在循環(huán)前對循環(huán)控制變量進行初始化;“表達式2”用來判斷循環(huán)條件是否成立;“表達式3”用來修改循環(huán)變量的值。 for語句中的循環(huán)體語句可以是一個單獨的語句,也可以是一個復(fù)合語句。當是復(fù)合語句時,一定要用大括弧將其括起來,否則將會出現(xiàn)算法上的錯誤。 3個表達式中的某一個或幾個可以省略,但是相應(yīng)的分號必須保留,例如: for(; ;) 循環(huán)控制變量賦初值只進行1次,一旦循環(huán)體被執(zhí)行,立即進行修改循環(huán)變量的操作。,5.3.1 for語句的一般形式,第5章循環(huán)程序設(shè)計,for語句的一般形式中的“表達式3”可以省略,此時分號同樣不能省略。此外,還必須設(shè)法保證循環(huán)變量的增值。例如:

7、for(n=1;n10;n+) s=s+n; 等效于: for(n=1;n10;) s=s+n; n+; ,5.3.2 for語句的殊形式,第5章循環(huán)程序設(shè)計,for語句的一般形式中的“表達式1”和“表達式3”均可以省略,只保留“表達式2”和兩個分號。此時既要在for語句之前給循環(huán)變量賦初值,又要設(shè)法保證循環(huán)變量的增值。例如: for(n=1;n10;n+) s=s+n; 等效于: n=1; for(;n10;) s=s+n; n+; ,5.3.2 for語句的殊形式,第5章循環(huán)程序設(shè)計,此外,“表達式2”也可省略,如果省略“表達式2”,不會造成語法上的錯誤。但是,如果循環(huán)體內(nèi)沒有循環(huán)趨于結(jié)束

8、的語句,程序?qū)⑦M入死循環(huán)。一般不提倡這種省略,尤其對于初學(xué)者更是如此。,5.3.2 for語句的殊形式,第5章循環(huán)程序設(shè)計,二重循環(huán)的結(jié)構(gòu): 由for語句構(gòu)成的二重循環(huán)結(jié)構(gòu)的格式為: for(表達式1;表達式2;表達式3) 語句1; for(表達式4;表達式5;表達式6) 語句2; 語句3; ,5.4 循環(huán)的嵌套,第5章循環(huán)程序設(shè)計,二重循環(huán)的執(zhí)行順序為: 以第1層for循環(huán)為入口,通過“表達式1”對循環(huán)控制變量賦初值,接著使用“表達式2”進行條件判斷。若“表達式2”為“真”,則執(zhí)行語句1、第2層for循環(huán)和語句3(注意:語句2是第2層for語句的循環(huán)體)。 當?shù)?層for循環(huán)規(guī)定的循環(huán)次數(shù)全

9、部執(zhí)行完后,執(zhí)行語句3。至此,第1層for循環(huán)的第1次循環(huán)結(jié)束。接下來進行第1層for循環(huán)的下1次循環(huán),一直到“表達式2”的值為“假”為止。,5.4 循環(huán)的嵌套,第5章循環(huán)程序設(shè)計,在使用二重循環(huán)時應(yīng)注意以下幾點: 語句1、第2層for循環(huán)和語句3以復(fù)合語句的形式作為第1層for循環(huán)的循環(huán)體。 語句1、第2層for循環(huán)和語句3是并行的,程序運行時按順序執(zhí)行。 語句1和語句3可以省略。當沒有語句1和語句3時,可以省略大括弧。當有語句1或語句3時,必須要用大括弧將其括起來作為1個復(fù)合語句,否則,將會出現(xiàn)算法上的錯誤,5.4 循環(huán)的嵌套,第5章循環(huán)程序設(shè)計,使用格式: break; 用法說明: br

10、eak后面不跟任何表達式或語句,使用簡單方便,其形式為: break; break語句只用在switch選擇分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中。,5.5.1 break語句,第5章循環(huán)程序設(shè)計,使用格式: continue; 在使用continue語句時注意以下要點: continue語句后面不跟任何表達式或語句,使用簡單方便,其形式為:continue; continue語句只能在循環(huán)結(jié)構(gòu)中使用,使用范圍比break語句還窄。,5.5.2 continue語句,第5章循環(huán)程序設(shè)計,總結(jié): 通過學(xué)習和對比,我們可以得出以下結(jié)論:程序執(zhí)行到continue語句后只終止本次循環(huán),程序會繼續(xù)進行下1次循環(huán),整個循

11、環(huán)并不一定會終止。而程序執(zhí)行到break語句后將無條件地結(jié)束整個循環(huán),程序轉(zhuǎn)向循環(huán)結(jié)構(gòu)后的下1條語句。,5.5.2 continue語句,第5章循環(huán)程序設(shè)計,將while循環(huán)轉(zhuǎn)換為for循環(huán)。 while循環(huán)轉(zhuǎn)換成for循環(huán)的步驟為: 在while語句的表達式的前后添上“;”。 將while語句前的給循環(huán)變量賦初值的語句變?yōu)閒or語句的“表達式1”。 將while語句中的給循環(huán)變量增值的語句變?yōu)閒or語句的“表達式3”。 將“while”變?yōu)椤癴or”。 說明:for語句的使用靈活、形式多樣,所以轉(zhuǎn)換后的for語句形式可能有多種,但它們的功能都是相同的。,5.6 for循環(huán)與while循環(huán)的轉(zhuǎn)

12、換,第5章循環(huán)程序設(shè)計,將for循環(huán)轉(zhuǎn)換為while循環(huán)。 for循環(huán)轉(zhuǎn)換成while循環(huán)的步驟為: 將“表達式1”放在for語句之前并使其成為1個賦值語句。 將“表達式3”放在for語句的循環(huán)體內(nèi),使其作為循環(huán)體的最后1個語句。 將“for”變?yōu)椤皐hile”。 去掉“表達式2”前后的“;”,將“表達式2”作為while語句的表達式。,5.6 for循環(huán)與while循環(huán)的轉(zhuǎn)換,第5章循環(huán)程序設(shè)計,1.求1+2+3+-+100的值,試編程完成其功能。 #include void main() int i,s; s=0; i=1; while(i101) s=s+i; i+; printf(“s

13、=%dn”,s); ,5.7 典型例題評析,第5章循環(huán)程序設(shè)計,2.木馬板凳三十三,百個腿腿地下翻。試編程求解:有多少條木馬和有多少條板凳。 #include void main() int m,n; for(m=0;m34;m+) for(n=0;n26;n+) if(3*m+4*n=100) ,5.7 典型例題評析,第5章循環(huán)程序設(shè)計,3. 輸出1020中所有的素數(shù)和能被3整除的數(shù)的個數(shù),試編程完成其功能。 #include #include void main() int m,n,i,flag; n=0; for(m=10;m=20;m+) if(m%3=0) n+;/*對每一個m的值進

14、行是否能被3整除的判斷的統(tǒng)計*/ flag=1; for(i=2;i= sqrt(m);i+) if(m%i=0) flag=0; /*當不是素數(shù)時立即對變量flag賦值0值*/ if(flag=1) printf(“%d ”,m);/*只有當flag的值為1即m為素數(shù)時才輸出m*/ printf(“nn=%dn”,n); ,5.7 典型例題評析,第5章循環(huán)程序設(shè)計,4. 36塊磚,36人抬,男搬4,女搬3,兩個小孩抬一磚,要求一次搬完,問男、女、小孩各需若干。試編程完成其功能。#include #include void main() int w,m,c; for(m=0;m=9;m+) f

15、or(w=0;w=12;w+) c=36-m-w; if(4.0*m+3.0*w+0.5*c=36.0) printf(“m=%d w=%d c=%dn”,m,w,c); ,5.7 典型例題評析,第5章循環(huán)程序設(shè)計,或者: #include void main() int w,m,c; for(m=0;m=9;m+) for(w=0;w=12;w+) for(c=0;c=78;c+) if(4.0*m+3.0*w+0.5*c=36.0 ,5.7 典型例題評析,第5章循環(huán)程序設(shè)計,5.今有一樓梯,每步跨2階,最后余1階;每步跨3階,最后余2階;每步跨5階,最后余4階;每步跨6階,最后余5階;每步

16、跨7階,最后正好到達樓頂。試編程計算樓梯的總階數(shù)。 解一: #include void main() int lad; lad=7; while(lad%2!=1|lad%3!=2|lad%5!=4|lad%6!=5) lad=lad+7; printf(“l(fā)ad=%dn”,lad); ,5.7 典型例題評析,第5章循環(huán)程序設(shè)計,解二: #include void main() int lad; for(lad=7; ;lad=lad+7) if(lad%2=1 ,5.7 典型例題評析,第5章循環(huán)程序設(shè)計,While循環(huán)是1種“當型”循環(huán);而do-while語句是1種“直到型”循環(huán)。對于whi

17、le循環(huán)而言,只有當條件表達式的值為“真”時才執(zhí)行循環(huán)體。對于do-while語句而言,先無條件地執(zhí)行1次循環(huán)體再判斷條件表達式的值,因此循環(huán)體至少被執(zhí)行1次。 兩種while循環(huán)的關(guān)系為:當兩者的循環(huán)體相同,并且當?shù)?次判斷while后面的表達式時其值為“真”時,兩種循環(huán)得到的結(jié)果相同。否則,二者得到的結(jié)果不相同。 for語句的形式較為復(fù)雜,有3個表達式和1個循環(huán)體語句。3個表達式均可省略,但必須在程序其他相應(yīng)的位置(循環(huán)語句前、循環(huán)體內(nèi)等位置)補充必要的賦值、增值等語句。,5.8 小結(jié),第5章循環(huán)程序設(shè)計,對于循環(huán)體,如果循環(huán)體由多個語句構(gòu)成,必須用大括弧括起來作為1個復(fù)合語句來處理,否則就會出現(xiàn)算法錯誤。在進行程序的調(diào)試時,特別要注意這點,因為大括弧的有無不會造成語法上的錯誤,程序編譯時系統(tǒng)不會報錯。 break語句和continue語句主要用于循環(huán)的流程控制,兩者在用法上有顯著差別。break語句用于結(jié)束整個循環(huán)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論