




已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第五章 循環(huán)控制結(jié)構(gòu),學(xué)習(xí)內(nèi)容:,3、while循環(huán),5、for循環(huán),6、循環(huán)的嵌套,4、do-while循環(huán),7、幾種循環(huán)結(jié)構(gòu)的比較,1、循環(huán)控制概述,2、goto語句和goto循環(huán),重難點(diǎn):,2、break、continue語句。,1、 while語句、do-while語句和for語句及三種循環(huán)之間嵌套和區(qū)別。,學(xué)習(xí)目標(biāo):,2、掌握break、continue語句的功能和用法。,1、熟練掌握while、do-while和for語句及三種循環(huán)之間 的嵌套和區(qū)別。,8、輔助控制語句,9、循環(huán)結(jié)構(gòu)程序設(shè)計舉例,引例:給出N個兒童的體重,要求計算平均體重,#define N 10 #include “stdio.h” main( ) /*定義變量存放某兒童體重、總體重和 平均體重*/ float Weight, total=0, aver; *輸入N個兒童的體重并計算總體重*/ scanf(“%f”, /*前2個兒童的總體重*/,scanf(“%f”, /*前7個兒童的總體重*/,scanf(“%f”, ,#define N 10 #include “stdio.h” main( ) /*定義變量存放某兒童體重、總體重和平均體重*/ int i; float Weight, total=0, aver; *輸入N個兒童的體重并計算總體重*/ for(i=1;i=N;i+) scanf(“%f”, ,循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計的基本結(jié)構(gòu)之一。,C語言中的循環(huán)結(jié)構(gòu)可以用以下語句實(shí)現(xiàn): 1. while 循環(huán) 2. do-while 循環(huán) 3. for 循環(huán),5.3 while循環(huán),一、while語句的語法格式:,while(表達(dá)式) 循環(huán)體,二、執(zhí)行過程:,1.計算while后圓括號內(nèi)表達(dá)式的值,為非0則執(zhí)行第步,否則執(zhí)行第步;,2.執(zhí)行循環(huán)體,然后返回第步;,3.結(jié)束循環(huán),執(zhí)行while語句的下一語句。,例6-2:從鍵盤輸入正整數(shù)n,求 1+2+3+.+n。,#include void main( ) int n,i,sum=0; scanf(“%u”, ,#include main( ) unsigned n,i=1; long factorial=1; scanf(“%u”, ,例6-3:從鍵盤輸入正整數(shù)n,求n!,三、while語句的功能:,當(dāng)表達(dá)式為非0時重復(fù)執(zhí)行循環(huán)體。,四、注意事項:,1.while 語句的特征是”先判斷后執(zhí)行”;允許0次循環(huán)。,2.如果循環(huán)體包含一個以上的語句,那么應(yīng)該用復(fù)合語 句“ ”的形式。,例如,程序段1: sum=i=0 ; while (i10) +i ; sum+=i ;,程序段2: sum=i=0; while(i10) +i; sum+=i; 想一想執(zhí)行程序段1和程序段2后 i、sum的值?,3.在循環(huán)體中應(yīng)有使循環(huán)趨于結(jié)束的語句。,考慮以下while循環(huán)的執(zhí)行情況: i=1; sum=0; while(i10) sum+=i;,i=1; sum=0; while(i10) sum+=i; +i; ,作業(yè): 1.從鍵盤輸入兩個正整數(shù),求出它們的最大公約數(shù)和最小 公倍數(shù)。 要求: (1)使用while語句實(shí)現(xiàn); (2)輸出要說明信息,其形式為: 最大公約數(shù)=具體值,最小公倍數(shù)=具體值。 2.計算并輸出100999中的水仙花數(shù)(若3位數(shù)的各位數(shù)立 方之和等于該數(shù)本身,則稱該3位數(shù)為水仙花數(shù))。 (1)使用while語句實(shí)現(xiàn); (2)注意輸出數(shù)據(jù)的格式控制。 3.假設(shè)公雞每只5元,母雞每只3元,小雞三只1元,現(xiàn)有 100元,要求買100只雞,問公雞、母雞和小雞各多少只? 要求: (1)使用while語句的嵌套形式實(shí)現(xiàn); (2)輸出要有說明信息。,5.4 do-while循環(huán),一、do-while語句的語法格式:,do 循環(huán)體 while( 表達(dá)式 );,do-while循環(huán)控制流程圖,二、執(zhí)行過程:,1.執(zhí)行循環(huán)體;,2.求解while后圓括號內(nèi)的表達(dá)式,若為非0則返回第1步;否則執(zhí)行第3步;,3.結(jié)束循環(huán),執(zhí)行do-while語句的下一語句。,例6-4:從鍵盤輸入正整數(shù)n,求 1+2+3+.+n。,#include void main( ) int i=1; unsigned n,sum=0; scanf(“%u”, ,3、do-while語句的功能:,執(zhí)行循環(huán)體,直到表達(dá)式為0。,#include main( ) unsigned n,i=1; long factorial=1; scanf(“%u”, ,例6-5:從鍵盤輸入正整數(shù)n,求n!,四、注意事項:,1.do-while 語句的特征是“先執(zhí)行,后判斷”;循環(huán)體最 少執(zhí)行一次。,2.對于同一個問題, 既可以用 while語句 ,也可以用 do-while語句處理。,3.特別要注意while后加分號 ;,4.while和do-while循環(huán)的比較:,unsigned n, i=1,sum=0; scanf(“%u”, ,unsigned n,i=1,sum=0; scanf(“%u”, while(i=n);,作業(yè): 1.從鍵盤輸入兩個正整數(shù),求出它們的最大公約數(shù)和最小 公倍數(shù)。 要求: (1)使用do-while語句實(shí)現(xiàn); (2)輸出要有字說明,其形式為: 最大公約數(shù)=具體值,最小公倍數(shù)=具體值。 2.計算并輸出100999中的水仙花數(shù)(若3位數(shù)的各位數(shù)立 方之和等于該數(shù)本身,則稱該3位數(shù)為水仙花數(shù))。 (1)使用do-while語句實(shí)現(xiàn); (2)注意輸出數(shù)據(jù)的格式控制。 3.從鍵盤輸入80個字符,統(tǒng)計其中的空格、+ 、- 、* 、/ 、英文字母和其他字符的個數(shù)。 要求: (1)使用do-while語句的嵌套形式實(shí)現(xiàn); (2)輸出要有說明信息。,5.5 for循環(huán),一、for語句的語法格式:,for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體,二、說明:,2.循環(huán)體由語句構(gòu)成,以實(shí)現(xiàn)某種功能。,1.表達(dá)式1和表達(dá)式3是算式表達(dá)式,表達(dá)式2是條件;,for (i=1,sum=0; i=100; i+) sum=sum+i ;,for循環(huán)控制流程圖,三、執(zhí)行過程:,1.求解表達(dá)式1;,2.求解表達(dá)式2,若為非0則執(zhí)行第3步;否則執(zhí)行第5步;,3.執(zhí)行循環(huán)體;,4.求解表達(dá)式3,然后返回第2步;,5.結(jié)束循環(huán),執(zhí)行for語句的下一語句。,例6-6:從鍵盤輸入正整數(shù)n,求 1+2+3+.+n。,#include void main( ) int i; unsigned n,sum=0; scanf(“%u”, ,#include main( ) unsigned n,i; long factorial=1; scanf(“%u”, ,例6-7:從鍵盤輸入正整數(shù)n求n!,四、for語句的功能:,當(dāng)表達(dá)式2為非0時重復(fù)執(zhí)行循環(huán)體。,五、使用for語句的注意事項:,1.任意表達(dá)式都可省略,但表達(dá)式后的分號必須保留:,例6-8:求1100之內(nèi)偶數(shù)和。,main( ) int i , sum=0; for( i=1; i100;i+ ) if( i%2=0 )sum+=i; printf(“1-100之內(nèi)偶數(shù)=%d”,sum); ,省略“表達(dá)式1”時,應(yīng)在for語句之前給循環(huán)變量賦初值;,i=1 ; for( ; i=100 ; i+) sum+=i ;,省略“表達(dá)式2”時,編譯系統(tǒng)默認(rèn)表達(dá)式2為非0;,省略“表達(dá)式3”時,應(yīng)在循環(huán)體中修改循環(huán)控制變量,以 保證循環(huán)正常結(jié)束.,for( i=1 ; ; i+) sum+=i ;,for( i=1 ; i=100 ; ) sum+=i ; i+ ; ,2.表達(dá)式2可以是任何類型,其值理解為邏輯量;,3.若表達(dá)式2從一開始就為0,那么循環(huán)體一次也不執(zhí)行;,4.表達(dá)式1可以包含除給循環(huán)變量賦初值之外的其他操作;,5.表達(dá)式3可以做屬于循環(huán)體的操作;,6.逗號表達(dá)式的最主要的用處:,讓程序員使用多個初始化表達(dá)式和多個值遞增表達(dá)式, 這在for語句中表現(xiàn)為表達(dá)式1和表達(dá)式3都是逗號表達(dá)式。,for(i=1,j=100,sum=0;ij;i+,j-) sum+=i+j;,for(i=1,sum=0;i=n; sum+=i+) ;,for(i=1,sum=0;i=n; i+) sum+=i;,六、循環(huán)語句的使用要點(diǎn):,1.循環(huán)體含一個以上語句時,必須以復(fù)合語句的形式出現(xiàn);當(dāng)循環(huán)體為空時不要掉了分號(;)。,2.注意循環(huán)控制變量的初值及其修改,以保證循環(huán)正常 執(zhí)行和正常結(jié)束。,3.可以在循環(huán)體中安排使表達(dá)式變?yōu)椤?”的語句,也可以 通過表達(dá)式本身實(shí)現(xiàn)這種控制功能。,for( i=1; i=n; i+) if(! ( i%2 ) ) sum = sum + i;,for( i=1; i=n; ) if( ! ( i%2 ) ) sum = sum + i; i+ ; ,4.應(yīng)避免無限循環(huán)、永不執(zhí)行的循環(huán)、執(zhí)行次數(shù)不正確 的循環(huán)等情況.,5.對于嵌套的循環(huán)語句,應(yīng)寫成縮進(jìn)對齊格式,以增加 程序結(jié)構(gòu)的清晰感和美感.,作業(yè): 1.從鍵盤輸入兩個正整數(shù),求出它們的最大公約數(shù)和最小 公倍數(shù)。 要求: (1)使用for語句實(shí)現(xiàn); (2)輸出要有字說明,其形式為: 最大公約數(shù)=具體值,最小公倍數(shù)=具體值。 2.計算并輸出100999中的水仙花數(shù)(若3位數(shù)的各位數(shù)立 方之和等于該數(shù)本身,則稱該3位數(shù)為水仙花數(shù))。 (1)使用for語句實(shí)現(xiàn); (2)注意輸出數(shù)據(jù)的格式控制。 3.從鍵盤輸入80個字符,統(tǒng)計其中的空格、+ 、- 、* 、/ 、英文字母和其他字符的個數(shù)。 要求: (1)使用for語句的嵌套形式實(shí)現(xiàn); (2)輸出要有說明信息。,5.6 循環(huán)的嵌套,當(dāng)一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu)時,就稱 為循環(huán)的嵌套,while(條件1) while(條件2) ,do do while(條件2); while(條件1);,for(表達(dá)式1;表達(dá)式2;表達(dá)式3) for(表達(dá)式1;表達(dá)式2;表達(dá)式3) ,while(條件1) do while(條件2); ,while(條件) for(表達(dá)式1;表達(dá)式2;表達(dá)式3) ,do while(條件2) while(條件1);,do for(表達(dá)式1;表達(dá)式2;表達(dá)式3) while(條件);,for(表達(dá)式1;表達(dá)式2;表達(dá)式3) while(條件) ,for(表達(dá)式1;表達(dá)式2;表達(dá)式3) do while(條件); ,(1).內(nèi)層循環(huán)出現(xiàn)在外層循環(huán)的循環(huán)體中;并且每次從 外層進(jìn)入內(nèi)層時,內(nèi)層循環(huán)控制變量必須重新賦值。,1.注意事項:,例6-10:計算并輸出100999中的水仙花數(shù)(若3位數(shù)的各 位數(shù)立方之和等于該數(shù)本身,則稱該3位數(shù)為水仙花數(shù))。,#include main( ) int a,b,c; printf(“n水仙花數(shù):”); for(a=1;a=9;a+) for(b=0;b=9;b+) for(c=0;c=9;c+) if(a*a*a+b*b*b+c*c*c=a*100+b*10+c) printf(“%-6d”,a*100+c*10+d); ,例6-11:編寫程序顯示“九九乘法表”。,#include main( ) int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(“%d*%d=%-4d”,i,j,i*j); printf(“n”); ,(2). 根據(jù)具體問題分析內(nèi)外層循環(huán)控制變量的關(guān)系。,作業(yè): 百馬百擔(dān)問題:有100匹馬,馱100擔(dān)貨,大馬馱3擔(dān),中 馬馱2擔(dān),兩匹小馬馱1擔(dān),問有大,小,中馬各有多少匹?,5.7 幾種循環(huán)的比較,1.四種循環(huán)都可以處理同一問題,一般情況下可以互換, 但是盡量不用if-goto型循環(huán)。,3. while 和do-while 循環(huán),在while后面只指定循環(huán)的條 件,而使循環(huán)趨于結(jié)束的語句包含在循環(huán)體中。而for 循 環(huán)可以在“表達(dá)式3”中包含使循環(huán)趨于結(jié)束的操作。,2.用while 和 do-while循環(huán)時,循環(huán)變量的賦值應(yīng)在 while 和 do-while之前 ;而for 循環(huán)可以在“表達(dá)式1”中 實(shí)現(xiàn)。,4. while循環(huán)和for循環(huán):先判斷后執(zhí)行; do-while循環(huán):先執(zhí)行后判斷。,5.對 while循環(huán)、do-while循環(huán)、for循環(huán),用 break 語 句跳出循環(huán),可以用 continue 語句結(jié)束本次循環(huán)。,例如:求 1+2+3+.+100?,void main( ) int i,sum=0; i=1; loop: if (i=100) sum=sum+i; i+; goto loop; printf(“%d“,sum); ,void main( ) int i,sum=0; i=1; while (i=100) sum=sum+i; i+; printf(“%d“,sum); ,goto 語句 構(gòu)成的循環(huán),while語句 構(gòu)成的循環(huán),void main( ) int i,sum=0; i=1; do sum=sum+i; i+; while(i=100); printf(“%d“,sum); ,do-while語 句構(gòu)成的循環(huán),void main( ) int i,sum=0; for (i=1;i=100;i+) sum=sum+i; printf(“%d“,sum); ,for語句構(gòu) 成的循環(huán),5.8 控制轉(zhuǎn)移語句,一、C中控制轉(zhuǎn)移語句的種類:,1.break語句,continue語句,goto語句:用于改變控制結(jié)構(gòu)預(yù)定的程序流程。,2.return語句:用于從函數(shù)返回到函數(shù)的調(diào)用處。,二、break語句,1.語法格式:,break;,2.作用:,終止switch、for、while、do-while語句的執(zhí)行,而 轉(zhuǎn)去執(zhí)行相應(yīng)的下一語句.,閱讀以下程序,分析其功能: void main() int i; unsigned factorial; factorial=1; for(i=1;132768) break; printf(“%d!=%dn“, i,factorial); ,3.使用break語句的注意事項:,(1).break語句只能用于循環(huán)語句或switch語句;,例:輸出100以內(nèi)的素數(shù)。 voi
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 婚前著作權(quán)侵權(quán)糾紛解決及賠償協(xié)議
- 頂級國際論壇同聲傳譯人才選拔與培養(yǎng)協(xié)議
- 工業(yè)級3D打印設(shè)備研發(fā)成果轉(zhuǎn)化與技術(shù)支持服務(wù)合同
- 創(chuàng)業(yè)指導(dǎo)與職業(yè)規(guī)劃師合作合同
- 智能硬件集成社交電商項目合伙人合作協(xié)議
- 子女教育項目投資與融資合作協(xié)議
- 文化遺產(chǎn)保護(hù)公益合作框架協(xié)議
- 三維動畫制作流程與分工體系
- QC檢驗儀器管理維護(hù)培訓(xùn)
- 現(xiàn)場維修管理制度
- 交流電機(jī)理論分析
- 反應(yīng)器詳細(xì)設(shè)計說明書
- 無人機(jī)教員聘用協(xié)議書參考
- 變電站工程電纜溝施工設(shè)計方案
- 氧化鋁倉庫及氧化鋁輸送系統(tǒng)施工組織設(shè)計
- 章狹義相對論力學(xué)基礎(chǔ)PPT學(xué)習(xí)教案
- 項目需求調(diào)研表模板
- 高清元素周期表(專業(yè)版)
- 投資框架協(xié)議中英文版
- 50噸汽車吊性能表
- 光榮升旗手PPT課件
評論
0/150
提交評論