版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì),5.1 while語(yǔ)句 5.2 do-while語(yǔ)句 5.3 for 語(yǔ)句 5.4 break、continue和goto 5.5 循環(huán)的嵌套 5.6 復(fù)合結(jié)構(gòu)程序舉例,三大結(jié)構(gòu),順序,選擇,循環(huán),第3章已討論,本章討論,第4章已討論,問(wèn)題提出: 有些工作帶有明顯的“重復(fù)性”,需要反復(fù)來(lái)做,例如計(jì)算1000個(gè)學(xué)生的平均成績(jī),需要求1000次平均值,如何編寫(xiě)程序高效率地解決這樣的問(wèn)題?,解決方法:采用循環(huán)結(jié)構(gòu)。,C語(yǔ)言如何實(shí)現(xiàn)循環(huán)結(jié)構(gòu)?,什么是循環(huán) 現(xiàn)實(shí)意義,許多實(shí)際問(wèn)題中往往需要有規(guī)律地重復(fù)某些操作,如投籃比賽時(shí)有:“向籃筐擲球直到100次”這樣的步驟,也就是說(shuō),在達(dá)
2、到100次之前反復(fù)地投。相應(yīng)的操作在計(jì)算機(jī)程序中就體現(xiàn)為某些語(yǔ)句的重復(fù)執(zhí)行,這就是所謂的循環(huán)。,下面再來(lái)思考一個(gè)問(wèn)題: 編程求1 + 2 + + 100的值。,程序段如下: int s = 0; s = s + 1; s = s + 2; s = s + 3; s = s + 4; s = s + 100;,重復(fù)100次,暈!,s = s + 1; s = s + 2; s = s + 3; s = s + 4; s = s + 100;,有沒(méi)有更好(有效)的方法來(lái)計(jì)算呢?,有!就是用循環(huán)來(lái)編程。,while、do-while、for語(yǔ)句 循環(huán)嵌套 break、continue、goto語(yǔ)句
3、循環(huán)結(jié)構(gòu)類(lèi)型的選擇及轉(zhuǎn)換 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)舉例,學(xué)習(xí)目標(biāo),理解循環(huán)結(jié)構(gòu)的含義; 掌握C語(yǔ)言三種循環(huán)結(jié)構(gòu)的特點(diǎn); 掌握while、do-while、for語(yǔ)句的使用方法; 理解goto、break、continue語(yǔ)句含義; 掌握不同循環(huán)結(jié)構(gòu)的選擇及其轉(zhuǎn)換方法;,學(xué)習(xí)內(nèi)容,循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)循環(huán)三語(yǔ)句,1. while語(yǔ)句,一般格式:,while (表達(dá)式) 循環(huán)體,執(zhí)行流程:,F,T,表達(dá)式,循環(huán)體,其中: while后面的括號(hào)( )不能??; 表達(dá)式類(lèi)型任意,一般是條件或邏輯表達(dá)式; 表達(dá)式的值是循環(huán)的控制條件; 語(yǔ)句部分稱(chēng)為循環(huán)體,當(dāng)需要執(zhí)行多條語(yǔ)句時(shí),應(yīng)使用復(fù)合語(yǔ)句。,特點(diǎn): 先判斷表達(dá)式
4、,再執(zhí)行循環(huán)體。,while,【案例1】用while語(yǔ)句求1+2+3+100的和。,main ( ) int i = 1, sum = 0; while ( i = 100 ) sum += i; i+; printf (sum = %dn, sum); ,循環(huán)初值,循環(huán)終值,循環(huán)條件,循環(huán)體,循環(huán)變量增值,運(yùn)行結(jié)果: sum = 5050,【案例2】顯示110的平方。,main ( ) int i = 1; while ( i 0 ) printf(OK); 無(wú)任何輸出,循環(huán)體中的語(yǔ)句可為任意類(lèi)型的C語(yǔ)句。,遇到下列情況,退出while循環(huán):,表達(dá)式為假(值為0); 循環(huán)體內(nèi)遇到break、
5、return或goto語(yǔ)句, (break和goto語(yǔ)句將在隨后介紹)。,注意事項(xiàng),循環(huán)控制變量必須提前確定值,否則執(zhí)行的結(jié)果將是不可預(yù)知的。,main ( ) int i = 1, sum = 0; while ( i = 100 ) sum += i; i+; printf (sum = %dn, sum); ,要在while語(yǔ)句的某處(表達(dá)式或循環(huán)體內(nèi))改變循環(huán)控制變量,否則極易構(gòu)成死循環(huán)。,注意事項(xiàng),main( ) int i=1, sum=0; while (i = 100) sum += i; printf (sum = %dn, sum); ,判斷下面程序的運(yùn)行結(jié)果:,死循環(huán) 無(wú)
6、結(jié)果,允許while語(yǔ)句的循環(huán)體又是while語(yǔ)句,從而形成雙重循環(huán)。,main( ) int i = 1, j = 1; while (i = 2) j=1; while (j = 3) printf (%d-Hello world!n,j); j+; i+; ,注意事項(xiàng),輸出:,輸出: 1-Hello world! 2-Hello world! 3-Hello world! 1-Hello world! 2-Hello world! 3-Hello world!,分析算法: (1) 輸入兩個(gè)正整數(shù)m和n。 (2) 用m除以n,余數(shù)為r,如果r等于0,則n是最大公因子,算法結(jié)束,否則(3)。
7、 (3) 把n賦給m,把r賦給n,轉(zhuǎn)向(2)。,【案例3】 求兩個(gè)正整數(shù)的最大公因子。,代碼,選講,#include main ( ) int m, n, r ; printf (“Input two integer: ); scanf (%d%d, ,運(yùn)行結(jié)果: Input two integer: 24 56 Their greatest common divisor is 8,do 循環(huán)體 while(表達(dá)式);,其中: 括號(hào)( )和分號(hào) ; 都不能?。?表達(dá)式 類(lèi)型任意; 表達(dá)式的值是是循環(huán)的控制條件; 循環(huán)體為單條語(yǔ)句,需要執(zhí)行多條語(yǔ)句時(shí),使用復(fù)合語(yǔ)句。,F,T,表達(dá)式,循環(huán)體,循環(huán)
8、結(jié)構(gòu)的程序設(shè)計(jì)循環(huán)三語(yǔ)句,2. dowhile 語(yǔ)句,一般格式:,執(zhí)行流程:,特點(diǎn): 先執(zhí)行一次循環(huán)體,再判斷表達(dá)式。,do,main ( ) int i = 1, sum = 0; do sum += i; i+; while ( i = 100 ); printf (sum = %dn, sum); ,運(yùn)行結(jié)果: sum = 5050,【案例】用dowhile語(yǔ)句求1+2+100的和。,do.while語(yǔ)句注意事項(xiàng),循環(huán)體至少執(zhí)行一次。 不要忘記初始化循環(huán)控制變量,否則執(zhí)行的結(jié)果將是不可預(yù)知的。 要在dowhile語(yǔ)句的某處(表達(dá)式或循環(huán)體內(nèi))改變循環(huán)控制變量的值,否則極易構(gòu)成死循環(huán)。 d
9、o.while語(yǔ)句也可以組成多重循環(huán),而且也可以和while語(yǔ)句相互嵌套。,F,T,表達(dá)式2,循環(huán)體,for,表達(dá)式1,表達(dá)式3,for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體,循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)循環(huán)三語(yǔ)句,3. for 語(yǔ)句,一般格式:,執(zhí)行流程:,特點(diǎn): 三種循環(huán)中最靈活的一種。,for語(yǔ)句很好地體現(xiàn)了正確使用循環(huán)結(jié)構(gòu)應(yīng)注意的三個(gè)問(wèn)題: 控制變量的初始化 循環(huán)條件的設(shè)置 循環(huán)控制變量的更新,其中: for后面的括號(hào)( )不能省 表達(dá)式1:一般為賦值表達(dá)式,初始化控制變量 表達(dá)式2:一般關(guān)系或邏輯表達(dá)式,循環(huán)控制條件 表達(dá)式3:一般為賦值表達(dá)式,更新控制變量 表達(dá)式之間用分號(hào)間隔,分號(hào)不可省
10、略 語(yǔ)法上循環(huán)體為單條語(yǔ)句,當(dāng)需要執(zhí)行多條語(yǔ)句時(shí),應(yīng)使用復(fù)合語(yǔ)句。,循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)循環(huán)三語(yǔ)句,3. for 語(yǔ)句,main ( ) int i , sum = 0; for (i = 1; i = 100; i+) sum += i; printf (sum = %dn, sum); ,運(yùn)行結(jié)果: sum = 5050,【案例】用for語(yǔ)句求1+2+3+100的和。,例:計(jì)算1*2+3*4+5*6+99*100。 main( ) int i, j; long sum = 0; for ( i =1, j = 2; i = 99; i = i + 2, j = j + 2 ) sum +=
11、i *j; printf (sum = %ldn, sum); ,三個(gè)表達(dá)式的類(lèi)型任意。例如,都可以是逗號(hào)表達(dá)式,即每個(gè)表達(dá)式都可由多個(gè)子表達(dá)式組成。,逗號(hào)表達(dá)式,逗號(hào)表達(dá)式,for語(yǔ)句注意事項(xiàng),main ( ) int i, sum = 0; i = 1; for ( ; i = 100; i+) sum += i; printf(sum = %dn, sum); ,省略表達(dá)式1,表達(dá)式1、表達(dá)式2、和表達(dá)式3都是任選項(xiàng),可以省掉其中的一個(gè)、兩個(gè)或全部,但其用于間隔的分號(hào)一個(gè)也不能省。,for語(yǔ)句注意事項(xiàng),main ( ) int i, sum = 0; i = 1; for ( ; i 1
12、00) break; sum += i+; printf(sum = %dn, sum); ,省略表達(dá)式1,2,3,表達(dá)式1、表達(dá)式2、和表達(dá)式3都是任選項(xiàng),可以省掉其中的一個(gè)、兩個(gè)或全部,但其用于間隔的分號(hào)一個(gè)也不能省。,for語(yǔ)句注意事項(xiàng),for (a = 1; ; a+) printf (%dn, a);,若省略表達(dá)式2,則表示永遠(yuǎn)為真。,死循環(huán)!,for語(yǔ)句也可以組成多重循環(huán),而且也可以與while語(yǔ)句和do-while語(yǔ)句相互嵌套。,for語(yǔ)句注意事項(xiàng),循環(huán)體中的語(yǔ)句可為任意類(lèi)型的C語(yǔ)句。,for() for() ,for() while() ,do for() while();,例
13、如: main ( ) int i,sum = 0; for (i=1 ; i=100; sum+=i,i+) ; printf (sum=%d,sum); ,表示循環(huán)體為空語(yǔ)句。,循環(huán)體可以是空語(yǔ)句。,for語(yǔ)句注意事項(xiàng),運(yùn)行結(jié)果: sum = 5050,三種循環(huán)可互相嵌套; 外層循環(huán)可包含兩個(gè)以上內(nèi)循環(huán),但不能相互交叉; 嵌套循環(huán)的執(zhí)行次序: 先內(nèi)后外。,for( ; ;) do while(); while() . ,外循環(huán),內(nèi)循環(huán),內(nèi)循環(huán),循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)循環(huán)三語(yǔ)句,4. 循環(huán)嵌套,案例,循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)循環(huán)三語(yǔ)句,4. 循環(huán)嵌套,【例】利用循環(huán)嵌套,輸出九九乘法表。,選講,分析,
14、main ( ) int i, j; for (i = 1; i 10; i+) printf (%4d, i); printf (n-n); for (i = 1; i 10; i+) for (j = 1; j = a /*循環(huán)退出*/ ,運(yùn)行結(jié)果: howareyou HOWAREYOU,功能:結(jié)束本次循環(huán),跳過(guò)循環(huán)體中尚未執(zhí)行的語(yǔ)句,進(jìn)行下一次是否執(zhí)行循環(huán)體的判斷。,for () while () continue; 語(yǔ)句; ,continue;,循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)其他影響流程的語(yǔ)句,5. break與continue語(yǔ)句,(2) continue語(yǔ)句,說(shuō)明:僅用于循環(huán)語(yǔ)句;在嵌套循環(huán)
15、的情況下,continue語(yǔ)句只對(duì)包含它的最內(nèi)層的循環(huán)體語(yǔ)句起作用。,【案例】計(jì)算1100之間的偶數(shù)和。,main ( ) int i,sum = 0; for (i = 1; i =100; i+) if (i%2!= 0) continue; sum+=i; printf (sum=%dn, sum); ,運(yùn)行結(jié)果:,運(yùn)行結(jié)果: sum=2550,一般形式:,循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)其他影響流程的語(yǔ)句,6. goto語(yǔ)句, label: goto label; ,或, goto label; label: ,作用:,使程序直接跳轉(zhuǎn)到語(yǔ)句標(biāo)號(hào)處執(zhí)行。,語(yǔ)句標(biāo)號(hào)為用戶(hù)自定義標(biāo)識(shí)符。,循環(huán)結(jié)構(gòu)的程序設(shè)
16、計(jì)其他影響流程的語(yǔ)句,6. goto語(yǔ)句,說(shuō)明:,語(yǔ)句標(biāo)號(hào)起標(biāo)識(shí)語(yǔ)句的作用,與goto 語(yǔ)句配合使用。,語(yǔ)句標(biāo)號(hào)放在某一語(yǔ)句行的最前面。,標(biāo)號(hào)后加冒號(hào)(:)。,(1) 與條件語(yǔ)句配合使用,構(gòu)成循環(huán)。,循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)其他影響流程的語(yǔ)句,6. goto語(yǔ)句,應(yīng)用:,【例】求1+2+3+100的和。 main ( ) int i = 1, sum = 0; loop: sum += i+; if (i = 1e-6) pi += t; n += 2; s = -s; t = s / n; pi *= 4; printf (pi = %fn, pi); ,運(yùn)行結(jié)果: pi = 3.141594,本章小結(jié),關(guān)鍵字: while、do、for、break、continue、goto 語(yǔ)言提供了三種循環(huán)語(yǔ)句。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 全音像記錄制度
- 職業(yè)性皮膚病的職業(yè)健康政策研究
- 2026年數(shù)字媒體技術(shù)測(cè)試卷
- 2026年古代文學(xué)詩(shī)詞鑒賞與知識(shí)考試題目
- 職業(yè)性皮膚病危害因素與監(jiān)護(hù)要點(diǎn)
- 職業(yè)性暴露人群呼吸健康風(fēng)險(xiǎn)評(píng)估模型
- 光伏項(xiàng)目水保驗(yàn)收合同2025年規(guī)范范本
- 職業(yè)性放射性疾病監(jiān)護(hù)與防護(hù)標(biāo)準(zhǔn)
- 倉(cāng)庫(kù)進(jìn)品查驗(yàn)制度
- 職業(yè)性慢性病公眾宣傳策略
- 銷(xiāo)售經(jīng)理2025年工作總結(jié)及2025年工作計(jì)劃
- 新醫(yī)療新技術(shù)答辯
- 建筑施工-10S505柔性接口給水管道支墩規(guī)范圖集
- 五年級(jí)上冊(cè)小數(shù)四則混合運(yùn)算100道及答案
- 德育原理 課件全套 班建武 第1-9章 德育的本質(zhì)與功能-學(xué)校德育現(xiàn)代化
- JT-T-496-2018公路地下通信管道高密度聚乙烯硅芯塑料管
- 國(guó)際標(biāo)準(zhǔn)《風(fēng)險(xiǎn)管理指南》(ISO31000)的中文版
- 東海藥業(yè)校招測(cè)評(píng)題庫(kù)
- 精準(zhǔn)定位式漏水檢測(cè)方案
- 2023氣管插管意外拔管的不良事件分析及改進(jìn)措施
- 2023自動(dòng)啟閉噴水滅火系統(tǒng)技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論