c語言,唐浩強(qiáng)版_第1頁
c語言,唐浩強(qiáng)版_第2頁
c語言,唐浩強(qiáng)版_第3頁
c語言,唐浩強(qiáng)版_第4頁
c語言,唐浩強(qiáng)版_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第六章第六章 循環(huán)控制循環(huán)控制了解了解goto語句和語句和if 語句構(gòu)成的循環(huán)。語句構(gòu)成的循環(huán)。熟練掌握熟練掌握for語句、語句、while語句和語句和do-while語語 句,及其句,及其break語句、語句、continue語句的使用。語句的使用。 熟練掌握循環(huán)結(jié)構(gòu)程序設(shè)計的概念及其程熟練掌握循環(huán)結(jié)構(gòu)程序設(shè)計的概念及其程 序編制技術(shù)。序編制技術(shù)。循環(huán)結(jié)構(gòu)的特點是循環(huán)結(jié)構(gòu)的特點是語言中可以用以下語句來實現(xiàn)循環(huán):語言中可以用以下語句來實現(xiàn)循環(huán): 用用goto語句和語句和 if 語句構(gòu)成循環(huán);語句構(gòu)成循環(huán); 用用while語句;語句; 用用do_while語句語句; 用用for語句。語句。 程序

2、的流程是在給定條件時,反復(fù)執(zhí)程序的流程是在給定條件時,反復(fù)執(zhí)行,某個程序段。行,某個程序段。6.2 goto語句和goto語句構(gòu)成的循環(huán)一、一、gotogoto 語句語句無條件轉(zhuǎn)向語句,作用:使程序無條件轉(zhuǎn)向語句,作用:使程序的執(zhí)行無條件地轉(zhuǎn)移到指定處。的執(zhí)行無條件地轉(zhuǎn)移到指定處。執(zhí)行過程:執(zhí)行過程:執(zhí)行語句時,程序轉(zhuǎn)移到以標(biāo)號為前執(zhí)行語句時,程序轉(zhuǎn)移到以標(biāo)號為前綴的語句處繼續(xù)執(zhí)行。綴的語句處繼續(xù)執(zhí)行。如如:label_1: x+;label_1: x+; . . . goto label_1;一般形式:一般形式:goto goto 語句標(biāo)號語句標(biāo)號; ; 如:如: goto label_1;

3、 goto 123說明說明: goto語句是一種非結(jié)構(gòu)化語句,結(jié)構(gòu)化語句是一種非結(jié)構(gòu)化語句,結(jié)構(gòu)化程序設(shè)計方法不提倡使用程序設(shè)計方法不提倡使用goto語句,因為語句,因為濫用濫用goto語句將使程序流程無規(guī)律,可讀語句將使程序流程無規(guī)律,可讀性差。性差。 C語言允許在任何語句前語言允許在任何語句前加一個語句標(biāo)號,作為加一個語句標(biāo)號,作為goto語句的目標(biāo)。語句的目標(biāo)。形式:形式:語句標(biāo)號:語句語句標(biāo)號:語句二、用二、用goto語句和語句和 if 語句構(gòu)成循環(huán)語句構(gòu)成循環(huán)例:計算例:計算10!并輸出結(jié)果。!并輸出結(jié)果。不要從循環(huán)體外跳到循環(huán)體內(nèi)!不要從循環(huán)體外跳到循環(huán)體內(nèi)! main() int

4、 i=1, t=1; loop: if (i=10) t=t*i; i=i+1; goto loop; printf(“10!=%dn”,t); main() int i=1; long t=1; loop: if (i=10) t=t*i; i+; goto loop; printf(“10!=%ldn”,t);運行結(jié)果:運行結(jié)果:10!=24320本應(yīng)是:本應(yīng)是:10!=36288006.3 while 6.3 while 語句語句執(zhí)行過程執(zhí)行過程 先計算表達(dá)式的值先計算表達(dá)式的值 ;若表達(dá)式的值為真若表達(dá)式的值為真(非非0) 時執(zhí)行循環(huán)體中的語句,時執(zhí)行循環(huán)體中的語句, 然后重復(fù)上面步驟

5、。若表達(dá)然后重復(fù)上面步驟。若表達(dá)式的值為假式的值為假(0) ,則,則結(jié)束循環(huán)。結(jié)束循環(huán)。一般形式一般形式while (表達(dá)式表達(dá)式) 語句語句可以是邏輯表達(dá)式、關(guān)系表達(dá)式、可以是邏輯表達(dá)式、關(guān)系表達(dá)式、算數(shù)表達(dá)式(非算數(shù)表達(dá)式(非0 0為真,為真,0 0為假)。為假)。while (3)while (3)和和while (0) while (0) 從程序從程序設(shè)計的角度上說不合理,但是合設(shè)計的角度上說不合理,但是合法的。例如:法的。例如:while (3) 表示無限循環(huán)表示無限循環(huán)while (0) 表示不進(jìn)入循環(huán)體表示不進(jìn)入循環(huán)體例例1 1:將上面計算:將上面計算1010!并輸出結(jié)果的程序用

6、!并輸出結(jié)果的程序用whilewhile語句寫出:語句寫出:main() int i=1; long int t=1; while (i=10) t=t*i; i+; printf(“10!=%ldn”,t); main() int i=1; long int t=1;loop: if (i=10) t=t*i; i+; goto loop; printf(“10!=%ldn”,t); 例例3 3:輸入一串字符,求字符個數(shù)。:輸入一串字符,求字符個數(shù)。main()char i; int n=0; while(i!=n) scanf(“%c”,&i); n=n+1; printf(“n=

7、%d”,n);例例2 2:求:求1+2+3+.+1001+2+3+.+100的和。的和。main()int i,sum; i=1;sum=0; while(i=100) sum=sum+i; i=i+1; printf(“sum=%d”,sum);例題例題4:找出任意輸入的十個數(shù)中最大的一個。:找出任意輸入的十個數(shù)中最大的一個。main()float x;int n; scanf(“%f”,&x); n=1; while(n10) scanf(“%f”,&y); n=n+1; if(xy) x=y; printf(“the max data is%f”,x);6.4 do-wh

8、ile 6.4 do-while 語句語句一般形式一般形式分號不能少do語句語句 while(表達(dá)式);表達(dá)式);執(zhí)行過程執(zhí)行過程先執(zhí)行循環(huán)體中的語句;先執(zhí)行循環(huán)體中的語句;測試循環(huán)條件,為真測試循環(huán)條件,為真(非非0)則重復(fù)上面步驟,為假則重復(fù)上面步驟,為假(0)結(jié)束循環(huán)。結(jié)束循環(huán)。例:將上面計算例:將上面計算1010!并輸出結(jié)果的程序用!并輸出結(jié)果的程序用do-whiledo-while語句寫出:語句寫出:main() int i=1; long int t=1; while (i=10) t=t*i; i+; printf(“10!=%ldn”,t); main() int i=1; l

9、ong int t=1; do t=t*i; i+; while (i=10); printf(“10!=%ldn”,t); 我們將我們將while和和do-while循環(huán)做一下比較循環(huán)做一下比較:main() int i; long t=1; scanf(“%d”,&i); while (i=10) t=t*i; i+; printf(“%ldn”,t); main() int i; long t=1; scanf(“%d”,&i); do t=t*i; i+; while (i=10); printf(“%ldn”,t); 輸入:9輸出:90輸入:11輸出:1輸入:9輸出:

10、90輸入:11輸出:11while語句進(jìn)入循環(huán)體語句進(jìn)入循環(huán)體之前,測試循環(huán)條件,之前,測試循環(huán)條件,表達(dá)式必須為真,否表達(dá)式必須為真,否則則while循環(huán)不進(jìn)入循循環(huán)不進(jìn)入循環(huán)體,即環(huán)體,即循環(huán)體可能循環(huán)體可能一次也不執(zhí)行一次也不執(zhí)行。do-while語句不管開始的時語句不管開始的時候測試循環(huán)條件是真是假,候測試循環(huán)條件是真是假,循環(huán)體都要執(zhí)行一次,因循環(huán)體都要執(zhí)行一次,因為循環(huán)體是先于測試條件為循環(huán)體是先于測試條件執(zhí)行的。執(zhí)行的。6.5 for6.5 for語語 句句 不能省略不能省略不能省略不能省略一般形式:一般形式:for(for(表達(dá)式表達(dá)式1 1 ;表達(dá)式;表達(dá)式2 2;表達(dá)式;表

11、達(dá)式3) 3) 語句語句例題例題1:求:求1+2+3+.+100的和。的和。main() int i,s=0; for (i=1;i=100;i+) s=s+i; printf(“s=%d”,s);執(zhí)行過程:執(zhí)行過程: 求出表達(dá)式求出表達(dá)式1的值;的值; 對對“表達(dá)式表達(dá)式2”進(jìn)行判斷,若條件為真執(zhí)行循環(huán)體;進(jìn)行判斷,若條件為真執(zhí)行循環(huán)體;求解求解“表達(dá)式表達(dá)式3”;轉(zhuǎn)回(轉(zhuǎn)回(2)繼續(xù)執(zhí)行;)繼續(xù)執(zhí)行;循環(huán)結(jié)束,執(zhí)行循環(huán)結(jié)束,執(zhí)行for下面的語句。下面的語句。例例2 2:將上面計算:將上面計算1010!的程序用!的程序用 forfor語句寫出:語句寫出:main() int i; long

12、t; t=1; for(i=1; i=10; i+) t=t*i; printf(“10!=%ldn”,t); 說明說明:表達(dá)式表達(dá)式1 1:進(jìn)入循環(huán)體之前給某些變量賦初值。若?。哼M(jìn)入循環(huán)體之前給某些變量賦初值。若省略,可在略,可在forfor語句前給變量賦初值。語句前給變量賦初值。main() int i=1; long sum=1; for( ; i=10; i+) sum=sum*i; printf(“10!=%ldn”,sum); for for 循環(huán)的三個表達(dá)式起著不同的作用,根據(jù)需要可以省略。循環(huán)的三個表達(dá)式起著不同的作用,根據(jù)需要可以省略。表達(dá)式表達(dá)式2:決定循環(huán)的條件,若省略,

13、則為無限循環(huán)。:決定循環(huán)的條件,若省略,則為無限循環(huán)。如:如: for(i0; ;i+) 語句語句表達(dá)式表達(dá)式3 3:用于循環(huán)一次后對某些變量進(jìn)行修改。若:用于循環(huán)一次后對某些變量進(jìn)行修改。若省略,可在循環(huán)體內(nèi)對變量進(jìn)行修改省略,可在循環(huán)體內(nèi)對變量進(jìn)行修改 main() int i; long sum=1; for(i=1 ; i=10 ; ) sum=sum*i; i+; printf(“10!=%ldn”,sum); for 語句最為靈活,它完全可以代替的語句最為靈活,它完全可以代替的while語句。語句。如:如:i=1; while(i=10) sum=sum*i; i+; 等效于for

14、(i=1;i=10;i+) sum=sum*i; for語句功能很強(qiáng),其中表達(dá)式語句功能很強(qiáng),其中表達(dá)式1和表達(dá)式和表達(dá)式3可以是逗號表可以是逗號表達(dá)式,但為增強(qiáng)程序的可讀性,一般不要把與循環(huán)無關(guān)的東達(dá)式,但為增強(qiáng)程序的可讀性,一般不要把與循環(huán)無關(guān)的東西放到西放到for語句中。語句中。6.6 6.6 三種循環(huán)語句的總結(jié)三種循環(huán)語句的總結(jié) 共同特點:當(dāng)循環(huán)控制條件非零時,執(zhí)行循環(huán)體語句,共同特點:當(dāng)循環(huán)控制條件非零時,執(zhí)行循環(huán)體語句,否則終止循環(huán)。否則終止循環(huán)。語句可以是任何語句:簡單語句、復(fù)合語句、空語句。語句可以是任何語句:簡單語句、復(fù)合語句、空語句。while和和for:先判斷循環(huán)控制條件

15、,循環(huán)體可能一次也循環(huán)控制條件,循環(huán)體可能一次也不執(zhí)行;不執(zhí)行; do-while:后判斷循環(huán)控制條件,循環(huán)體至少執(zhí)行一次。循環(huán)控制條件,循環(huán)體至少執(zhí)行一次。在循環(huán)體內(nèi)或循環(huán)條件中必須有使循環(huán)趨于結(jié)束的語句,在循環(huán)體內(nèi)或循環(huán)條件中必須有使循環(huán)趨于結(jié)束的語句,否則會出現(xiàn)死循環(huán)等異常情況。否則會出現(xiàn)死循環(huán)等異常情況。三種循環(huán)可以處理同一問題,一般情況可以互相代替。實三種循環(huán)可以處理同一問題,一般情況可以互相代替。實際應(yīng)用中,根據(jù)具體情況來選用不同的循環(huán)語句。際應(yīng)用中,根據(jù)具體情況來選用不同的循環(huán)語句。一個循環(huán)外面包圍一層循環(huán)稱為二重循環(huán)。一個循環(huán)外面包圍一層循環(huán)稱為二重循環(huán)。一個循環(huán)外面包圍二層循

16、環(huán)稱為三重循環(huán)。一個循環(huán)外面包圍二層循環(huán)稱為三重循環(huán)。一個循環(huán)外面包圍多層循環(huán)稱為多重循環(huán)。一個循環(huán)外面包圍多層循環(huán)稱為多重循環(huán)。 while、do-while、for可互相嵌套自由組合??苫ハ嗲短鬃杂山M合。 什么叫循環(huán)嵌套?什么叫循環(huán)嵌套?一個循環(huán)的循環(huán)體中套有另一個循環(huán)叫循環(huán)一個循環(huán)的循環(huán)體中套有另一個循環(huán)叫循環(huán)嵌套。這種嵌套過程可以一直重復(fù)下去。嵌套。這種嵌套過程可以一直重復(fù)下去。6.7 6.7 循環(huán)的嵌套循環(huán)的嵌套例例1:打印如下圖形:打印如下圖形: * * * * * main()int i,j; for (i=1;i=5;i+) for (j=1;j=i;j+) printf(“*

17、”); printf(“n”);例例2:求:求3!+5!+7!+9!main()int i,j; long t,s=0; for (i=3;i=9;i=i+2) t=1; for(j=1;j=i;j+) t=t*j; s=s+t; printf(“s=%ld”,s);6.8 break 6.8 break 和和continuecontinue語句語句 一、一、break break 語句語句一般形式:一般形式:break ;break ;功能:結(jié)束當(dāng)前的一層循環(huán)。功能:結(jié)束當(dāng)前的一層循環(huán)。一般用在循環(huán)體的條件語句中,一般用在循環(huán)體的條件語句中,作用:當(dāng)某個條件成立時用作用:當(dāng)某個條件成立時用b

18、reakbreak語句退出循環(huán),不再繼語句退出循環(huán),不再繼續(xù)執(zhí)行其余的幾次循環(huán)。續(xù)執(zhí)行其余的幾次循環(huán)。例題:打印半徑為例題:打印半徑為110的圓的的圓的面積,如果面積超過面積,如果面積超過100,則,則不再打印。不再打印。#include #define PI 3.14159main() int r; float area; for(r=1; r100.0) break; printf(area=%fn,area); printf(now, r=%dn,r); 二、二、continue語句語句 一般形式:一般形式:continue ;功能:提前結(jié)束循環(huán)體,功能:提前結(jié)束循環(huán)體,進(jìn)入下一循環(huán)周期。進(jìn)入下一循環(huán)周期。一旦執(zhí)行了一旦執(zhí)行了continuecontinue語語句,程序就跳過循環(huán)體句,程序就跳過循環(huán)體中位于該語句后的所有中位于該語句后的所有語句,提前結(jié)束本次循語句,提前結(jié)束本次循環(huán)周期并開始下一個循環(huán)周期并開始下一個循環(huán)周期。環(huán)周期。例:計算用戶輸入的所有正整數(shù)例:計算用戶輸入的所有正整數(shù)的和,用戶輸入的和,用戶輸入

溫馨提示

  • 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

提交評論