C語(yǔ)言基礎(chǔ)_第6章_循環(huán)_第1頁(yè)
C語(yǔ)言基礎(chǔ)_第6章_循環(huán)_第2頁(yè)
C語(yǔ)言基礎(chǔ)_第6章_循環(huán)_第3頁(yè)
C語(yǔ)言基礎(chǔ)_第6章_循環(huán)_第4頁(yè)
C語(yǔ)言基礎(chǔ)_第6章_循環(huán)_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第六章l 本章要點(diǎn)l 主要內(nèi)容6.1 6.1 概述概述6.2 goto6.2 goto語(yǔ)句以及用語(yǔ)句以及用gotogoto語(yǔ)句構(gòu)成循環(huán)語(yǔ)句構(gòu)成循環(huán)6.3 6.3 用用whilewhile語(yǔ)句實(shí)現(xiàn)循環(huán)語(yǔ)句實(shí)現(xiàn)循環(huán)6.4 6.4 用用do-whiledo-while語(yǔ)句實(shí)現(xiàn)循環(huán)語(yǔ)句實(shí)現(xiàn)循環(huán)6.5 6.5 用用for for 語(yǔ)句實(shí)現(xiàn)循環(huán)語(yǔ)句實(shí)現(xiàn)循環(huán) 6.6 6.6 循環(huán)的嵌套循環(huán)的嵌套6.7 6.7 幾種循環(huán)的比較幾種循環(huán)的比較6.8 break6.8 break語(yǔ)句語(yǔ)句continuecontinue和語(yǔ)句和語(yǔ)句6.9 6.9 程程 序序 舉舉 例例 6.1 概述什么是循環(huán)?什么是循環(huán)?為什么要

2、使用循環(huán)?為什么要使用循環(huán)?1001nyn問(wèn)題問(wèn)題1 1:?jiǎn)栴}問(wèn)題2:2: 在許多問(wèn)題中需要用到循環(huán)控制。循環(huán)結(jié)構(gòu)在許多問(wèn)題中需要用到循環(huán)控制。循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu)之一,它和順序是結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu)之一,它和順序結(jié)構(gòu)、選擇結(jié)構(gòu)共同作為各種復(fù)雜程序的基本結(jié)構(gòu)、選擇結(jié)構(gòu)共同作為各種復(fù)雜程序的基本構(gòu)造單元。構(gòu)造單元。 6.2 goto語(yǔ)句以及用goto語(yǔ)句構(gòu)成循環(huán) goto goto語(yǔ)句語(yǔ)句無(wú)條件轉(zhuǎn)向語(yǔ)句無(wú)條件轉(zhuǎn)向語(yǔ)句 goto goto 語(yǔ)句標(biāo)號(hào);語(yǔ)句標(biāo)號(hào);語(yǔ)句標(biāo)號(hào)用標(biāo)識(shí)符表示,它的定名規(guī)則與變語(yǔ)句標(biāo)號(hào)用標(biāo)識(shí)符表示,它的定名規(guī)則與變量名相同,即由字母、數(shù)字和下劃線組成,量名相同

3、,即由字母、數(shù)字和下劃線組成,其第一個(gè)字符必須為字母或下劃線。其第一個(gè)字符必須為字母或下劃線。 例如:例如:goto label_1; goto label_1; 合法合法; ; goto 123 goto 123; 不合法不合法. . 6.2 goto語(yǔ)句以及用goto語(yǔ)句構(gòu)成循環(huán) 結(jié)構(gòu)化程序設(shè)計(jì)方法主張限制使用結(jié)構(gòu)化程序設(shè)計(jì)方法主張限制使用gotogoto語(yǔ)句,因語(yǔ)句,因?yàn)闉E用為濫用gotogoto語(yǔ)句將使程序流程無(wú)規(guī)律、可讀性差。語(yǔ)句將使程序流程無(wú)規(guī)律、可讀性差。一般來(lái)說(shuō),可以有兩種用途:一般來(lái)說(shuō),可以有兩種用途:(1) (1) 與與ifif語(yǔ)句一起構(gòu)成循環(huán)結(jié)構(gòu);語(yǔ)句一起構(gòu)成循環(huán)結(jié)構(gòu);(

4、2) (2) 從循環(huán)體中跳轉(zhuǎn)到循環(huán)體外。從循環(huán)體中跳轉(zhuǎn)到循環(huán)體外。 但是這種用法不符合結(jié)構(gòu)化原則,一般不宜采但是這種用法不符合結(jié)構(gòu)化原則,一般不宜采用,只有在不得已時(shí)用,只有在不得已時(shí)( (例如能大大提高效率例如能大大提高效率) )才使才使用。用。例6.1 用if語(yǔ)句和goto語(yǔ)句構(gòu)成循環(huán),求1到100的和void main( ) int i, sum=0; i=1;loop: if(i=100) sum=sum+i; i+; goto loop; printf(%dn,sum); 1001nn這里用的是這里用的是“當(dāng)型當(dāng)型”循環(huán)循環(huán)結(jié)構(gòu),當(dāng)滿足結(jié)構(gòu),當(dāng)滿足“i=100” i=100” 時(shí)時(shí)執(zhí)

5、行花括弧內(nèi)的循環(huán)體。執(zhí)行花括弧內(nèi)的循環(huán)體。 運(yùn)行結(jié)果:運(yùn)行結(jié)果:50505050 6.3 用while語(yǔ)句實(shí)現(xiàn)循環(huán)whilewhile語(yǔ)句用來(lái)實(shí)現(xiàn)語(yǔ)句用來(lái)實(shí)現(xiàn)“當(dāng)型當(dāng)型”循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)。一般形式:一般形式: while (while (表達(dá)式表達(dá)式) ) 語(yǔ)句語(yǔ)句 當(dāng)表達(dá)式為非當(dāng)表達(dá)式為非0 0值時(shí),執(zhí)行值時(shí),執(zhí)行whilewhile語(yǔ)句中的內(nèi)嵌語(yǔ)句。其特點(diǎn)是語(yǔ)句中的內(nèi)嵌語(yǔ)句。其特點(diǎn)是: :先判先判斷表達(dá)式,后執(zhí)行語(yǔ)句。斷表達(dá)式,后執(zhí)行語(yǔ)句。例6.2 求1到100的和#include void main() int i,sum=0; i=1; while (i=100) sum=sum+i;

6、 i+; printf(%dn,sum); 1001nn(1)(1)循環(huán)體如果包含一個(gè)以上循環(huán)體如果包含一個(gè)以上的語(yǔ)句,應(yīng)該用花括弧括起來(lái),以的語(yǔ)句,應(yīng)該用花括弧括起來(lái),以復(fù)合語(yǔ)句形式出現(xiàn)復(fù)合語(yǔ)句形式出現(xiàn).(2).(2)在循環(huán)體中在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句。 運(yùn)行結(jié)果:運(yùn)行結(jié)果:50505050 6.3 用while語(yǔ)句實(shí)現(xiàn)循環(huán)注意:注意:(1)(1)循環(huán)體如果包含一個(gè)以上的語(yǔ)句,應(yīng)該用循環(huán)體如果包含一個(gè)以上的語(yǔ)句,應(yīng)該用花括弧括起來(lái),以復(fù)合語(yǔ)句形式出現(xiàn)?;ɡɑ±ㄆ饋?lái),以復(fù)合語(yǔ)句形式出現(xiàn)。 (2)(2)在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句在循環(huán)體中應(yīng)有使循環(huán)

7、趨向于結(jié)束的語(yǔ)句。如果無(wú)此語(yǔ)句,則。如果無(wú)此語(yǔ)句,則i i的值始終不改變,的值始終不改變,循環(huán)永不結(jié)束。循環(huán)永不結(jié)束。 6.4 用do-while語(yǔ)句實(shí)現(xiàn)循環(huán) do-while do-while語(yǔ)句的特點(diǎn)語(yǔ)句的特點(diǎn): :先執(zhí)行循環(huán)先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。體,然后判斷循環(huán)條件是否成立。 一般形式一般形式: : do do 循環(huán)體語(yǔ)句循環(huán)體語(yǔ)句 while (while (表達(dá)式表達(dá)式) );執(zhí)行過(guò)程:執(zhí)行過(guò)程:先執(zhí)行一次指定的循環(huán)體語(yǔ)先執(zhí)行一次指定的循環(huán)體語(yǔ)句,然后判別表達(dá)式,當(dāng)表達(dá)式的值句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零為非零( (“真真”) ) 時(shí),返回重新執(zhí)行循時(shí),返回

8、重新執(zhí)行循環(huán)體語(yǔ)句,如此反復(fù),直到表達(dá)式的環(huán)體語(yǔ)句,如此反復(fù),直到表達(dá)式的值等于值等于0 0為止,此時(shí)循環(huán)結(jié)束。為止,此時(shí)循環(huán)結(jié)束。例6.3 求1到100的和#include void main() int i,sum=0; i=1; do sum=sum+i; i+; while(i=100); printf(%dn,sum); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:505050501001nn 6.4 用do-while語(yǔ)句實(shí)現(xiàn)循環(huán)whilewhile語(yǔ)句和用語(yǔ)句和用do-whiledo-while語(yǔ)句的比較語(yǔ)句的比較: :在一般情況下,用在一般情況下,用whilewhile語(yǔ)句和用語(yǔ)句和用do-while

9、do-while語(yǔ)語(yǔ)句處理同一問(wèn)題時(shí),若二者的循環(huán)體部分是一句處理同一問(wèn)題時(shí),若二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣。但是如果樣的,它們的結(jié)果也一樣。但是如果whilewhile后面后面的表達(dá)式一開(kāi)始就為假的表達(dá)式一開(kāi)始就為假(0(0值值) )時(shí),兩種循環(huán)的結(jié)時(shí),兩種循環(huán)的結(jié)果是不同的。果是不同的。例6.4 while和do-while循環(huán)的比較(1) #include (2) #include void main ( ) void main( ) int sum=0,i; int sum=0,i; scanf(“%d,&i); scanf(”%d,&i); while

10、(i=10) do sum=sum+I; sum=sum+i;i+; i+; while (i=10);printf(“sum=%dn ,sum); printf(“sum=%dn”,sum); 1001nn運(yùn)行結(jié)果:運(yùn)行結(jié)果:11 sum=55 sum=55 再運(yùn)行一次:再運(yùn)行一次: 1111sum=0sum=0運(yùn)行結(jié)果:運(yùn)行結(jié)果:11 sum=55 sum=55 再運(yùn)行一次:再運(yùn)行一次: 1111sum=11sum=11(1)(1)當(dāng)當(dāng)whilewhile后面的表達(dá)式的后面的表達(dá)式的第一次的值為第一次的值為“真真”時(shí),兩種循時(shí),兩種循環(huán)得到的結(jié)果相同。否則,二者環(huán)得到的結(jié)果相同。否則,二者

11、結(jié)果不相同。結(jié)果不相同。 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán)C C語(yǔ)言中的語(yǔ)言中的forfor語(yǔ)句使用最為靈活,不僅可以用于語(yǔ)句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替可以代替whilewhile語(yǔ)句。語(yǔ)句。一般形式一般形式: : for(for(表達(dá)式表達(dá)式1 1;表達(dá)式;表達(dá)式2 2;表達(dá)式;表達(dá)式3) 3) 語(yǔ)句語(yǔ)句 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán)forfor語(yǔ)句的執(zhí)行過(guò)程:語(yǔ)句的執(zhí)行過(guò)程: (1) (1) 先求解表達(dá)式先求解表達(dá)式

12、1 1。 (2) (2) 求解表達(dá)式求解表達(dá)式2 2,若其值為真,若其值為真( (值為非值為非0)0),則執(zhí),則執(zhí) 行行forfor語(yǔ)句中指定的內(nèi)嵌語(yǔ)句,然后執(zhí)行下語(yǔ)句中指定的內(nèi)嵌語(yǔ)句,然后執(zhí)行下 面第面第(3)(3)步。若為假步。若為假( (值為值為0)0),則結(jié)束循環(huán),則結(jié)束循環(huán), 轉(zhuǎn)到第轉(zhuǎn)到第(5)(5)步。步。 (3) (3) 求解表達(dá)式求解表達(dá)式3 3。 (4) (4) 轉(zhuǎn)回上面第轉(zhuǎn)回上面第(2)(2)步驟繼續(xù)執(zhí)行。步驟繼續(xù)執(zhí)行。 (5) (5) 循環(huán)結(jié)束,執(zhí)行循環(huán)結(jié)束,執(zhí)行forfor語(yǔ)句下面的一個(gè)語(yǔ)句語(yǔ)句下面的一個(gè)語(yǔ)句 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán)表達(dá)式表達(dá)式2?執(zhí)行語(yǔ)句執(zhí)行語(yǔ)

13、句成立成立不成立不成立執(zhí)行執(zhí)行for循環(huán)之后的語(yǔ)循環(huán)之后的語(yǔ)句句執(zhí)行表達(dá)式執(zhí)行表達(dá)式3執(zhí)行表達(dá)式執(zhí)行表達(dá)式1循環(huán)初始條件循環(huán)初始條件循環(huán)控制條件循環(huán)控制條件循環(huán)體循環(huán)體for語(yǔ)句等價(jià)于下列語(yǔ)句:語(yǔ)句等價(jià)于下列語(yǔ)句:表達(dá)式表達(dá)式1;while (表達(dá)式(表達(dá)式2) 語(yǔ)句;語(yǔ)句; 表達(dá)式表達(dá)式3; 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán) for for語(yǔ)句最簡(jiǎn)單的形式:語(yǔ)句最簡(jiǎn)單的形式:for(for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) ) 例如例如: for(i=1;i=100;i+) sum=sum+i;: for(i=1;i=100;i+) sum=sum

14、+i;相當(dāng)于:相當(dāng)于: i=1;i=1; while(i=100) while(i=100) sum=sum+i;i+; sum=sum+i;i+; 用用forfor語(yǔ)句語(yǔ)句簡(jiǎn)單、方便。簡(jiǎn)單、方便。 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán)(1) for(1) for語(yǔ)句的一般形式中的語(yǔ)句的一般形式中的“表達(dá)式表達(dá)式1”1”可以省略,此可以省略,此時(shí)應(yīng)在時(shí)應(yīng)在forfor語(yǔ)句之前給循環(huán)變量賦初值。注意省略表語(yǔ)句之前給循環(huán)變量賦初值。注意省略表達(dá)式達(dá)式1 1時(shí),其后的分號(hào)不能省略。如時(shí),其后的分號(hào)不能省略。如 for(;i=100;i+) sum=sum+i; 執(zhí)行時(shí),跳過(guò)執(zhí)行時(shí),跳過(guò)“求解表達(dá)式求解表達(dá)

15、式1”1”這一步,其他不變。這一步,其他不變。 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán)(2) (2) 如果表達(dá)式如果表達(dá)式2 2省略,即不判斷循環(huán)條件,循環(huán)無(wú)終省略,即不判斷循環(huán)條件,循環(huán)無(wú)終止地進(jìn)行下去。也就是認(rèn)為表達(dá)式止地進(jìn)行下去。也就是認(rèn)為表達(dá)式2 2始終為真。始終為真。例如:例如:for(i=1; ;i+) sum=sum+i; 表達(dá)式表達(dá)式1 1是一個(gè)賦值表達(dá)式,表達(dá)式是一個(gè)賦值表達(dá)式,表達(dá)式2 2空缺。它相當(dāng)于:空缺。它相當(dāng)于: i=1; while(1) sum=sum+1;i+; 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán)(3) (3) 表達(dá)式表達(dá)式3 3也可以省略,但此時(shí)程序設(shè)計(jì)者應(yīng)另外設(shè)也可以

16、省略,但此時(shí)程序設(shè)計(jì)者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束。如:法保證循環(huán)能正常結(jié)束。如: for(i=1;i=100;) sum=sum+i;i+; 在上面的在上面的forfor語(yǔ)句中只有表達(dá)式語(yǔ)句中只有表達(dá)式1 1和表達(dá)式和表達(dá)式2 2,而沒(méi)有,而沒(méi)有表達(dá)式表達(dá)式3 3。i+i+的操作不放在的操作不放在forfor語(yǔ)句的表達(dá)式語(yǔ)句的表達(dá)式3 3的位置的位置處,而作為循環(huán)體的一部分,效果是一樣的,都能使處,而作為循環(huán)體的一部分,效果是一樣的,都能使循環(huán)正常結(jié)束。循環(huán)正常結(jié)束。 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán)(4) (4) 可以省略表達(dá)式可以省略表達(dá)式1 1和表達(dá)式和表達(dá)式3 3,只有表達(dá)式,只有表達(dá)

17、式2 2,即只,即只給循環(huán)條件。如:給循環(huán)條件。如: for(;i=100;) while(i=100) sum=sum+i; 相當(dāng)于相當(dāng)于 sum=sum+i; i+; i+; 在這種情況下,完全等同于在這種情況下,完全等同于whilewhile語(yǔ)句??梢?jiàn)語(yǔ)句。可見(jiàn)forfor語(yǔ)句語(yǔ)句比比whilewhile語(yǔ)句功能強(qiáng),除了可以給出循環(huán)條件外,還可語(yǔ)句功能強(qiáng),除了可以給出循環(huán)條件外,還可以賦初值,使循環(huán)變量自動(dòng)增值等。以賦初值,使循環(huán)變量自動(dòng)增值等。 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán)(5) 3(5) 3個(gè)表達(dá)式都可省略,如:個(gè)表達(dá)式都可省略,如: for(; ;) for(; ;) 語(yǔ)句語(yǔ)句

18、相當(dāng)于相當(dāng)于 while(1) while(1) 語(yǔ)句語(yǔ)句 即不設(shè)初值,不判斷條件即不設(shè)初值,不判斷條件( (認(rèn)為表達(dá)式認(rèn)為表達(dá)式2 2為真值為真值) ),循環(huán)變量不增值。無(wú)終止地執(zhí)行循環(huán)體。循環(huán)變量不增值。無(wú)終止地執(zhí)行循環(huán)體。 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán)(6) (6) 表達(dá)式表達(dá)式1 1可以是設(shè)置循環(huán)變量初值的賦值表達(dá)式,可以是設(shè)置循環(huán)變量初值的賦值表達(dá)式,也可以是與循環(huán)變量無(wú)關(guān)的其他表達(dá)式。如也可以是與循環(huán)變量無(wú)關(guān)的其他表達(dá)式。如: : for (sum=0;i=100;i+) sum=sum+i; 表達(dá)式表達(dá)式3 3也可以是與循環(huán)控制無(wú)關(guān)的任意表達(dá)式。也可以是與循環(huán)控制無(wú)關(guān)的任意表達(dá)

19、式。 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán) 表達(dá)式表達(dá)式1 1和表達(dá)式和表達(dá)式3 3可以是一個(gè)簡(jiǎn)單的表達(dá)式,也可以可以是一個(gè)簡(jiǎn)單的表達(dá)式,也可以是逗號(hào)表達(dá)式,即包含一個(gè)以上的簡(jiǎn)單表達(dá)式,中間用是逗號(hào)表達(dá)式,即包含一個(gè)以上的簡(jiǎn)單表達(dá)式,中間用逗號(hào)間隔。如:逗號(hào)間隔。如: for(sum=0,i=1;i=100;i+) sum=sum+i;或或 for(i=0,j=100;i=j;i+,j-) k=i+j; 表達(dá)式表達(dá)式1 1和表達(dá)式和表達(dá)式3 3都是逗號(hào)表達(dá)式,各包含兩個(gè)賦值都是逗號(hào)表達(dá)式,各包含兩個(gè)賦值表達(dá)式,即同時(shí)設(shè)兩個(gè)初值,使兩個(gè)變量增值表達(dá)式,即同時(shí)設(shè)兩個(gè)初值,使兩個(gè)變量增值. . 6.5 用

20、for 語(yǔ)句實(shí)現(xiàn)循環(huán) 在逗號(hào)表達(dá)式內(nèi)按自左至右順序求解,整個(gè)逗號(hào)表達(dá)在逗號(hào)表達(dá)式內(nèi)按自左至右順序求解,整個(gè)逗號(hào)表達(dá)式的值為其中最右邊的表達(dá)式的值。如式的值為其中最右邊的表達(dá)式的值。如: : for(i=1;i=100;i+,i+) sum=sum+i;相當(dāng)于相當(dāng)于 for(i=1;i=100;i=i+2) sum=sum+i; 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán)(7) (7) 表達(dá)式一般是關(guān)系表達(dá)式表達(dá)式一般是關(guān)系表達(dá)式( (如如i=100)i=100)或邏輯表達(dá)式或邏輯表達(dá)式 ( (如如ab & xy)ab & xy),但也可以是數(shù)值表達(dá)式或字符表達(dá),但也可以是數(shù)值表達(dá)式或字符表

21、達(dá) 式,只要其值為非零,就執(zhí)行循環(huán)體。式,只要其值為非零,就執(zhí)行循環(huán)體。 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán) for(i=0;(c=getchar()!=n;i+=c); 在表達(dá)式在表達(dá)式2 2中先從終端接收一個(gè)字符賦給中先從終端接收一個(gè)字符賦給c c,然后判斷,然后判斷此賦值表達(dá)式的值是否不等于此賦值表達(dá)式的值是否不等于n(n(換行符換行符) ),如果,如果不等于不等于nn,就執(zhí)行循環(huán)體。,就執(zhí)行循環(huán)體。此此forfor語(yǔ)句的循環(huán)體為空語(yǔ)句,把本來(lái)要在循環(huán)語(yǔ)句的循環(huán)體為空語(yǔ)句,把本來(lái)要在循環(huán)體內(nèi)處理的內(nèi)容放在表達(dá)式體內(nèi)處理的內(nèi)容放在表達(dá)式3 3中,作用是一樣的??梢?jiàn)中,作用是一樣的。可見(jiàn)forf

22、or語(yǔ)句功能強(qiáng),可以在表達(dá)式中完成本來(lái)應(yīng)在循環(huán)體語(yǔ)句功能強(qiáng),可以在表達(dá)式中完成本來(lái)應(yīng)在循環(huán)體內(nèi)完成的操作。內(nèi)完成的操作。 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán) for( ;(c=getchar()!=for( ;(c=getchar()!=n;)n;) printf(%c printf(%c,c);c); for for語(yǔ)句中只有表達(dá)式語(yǔ)句中只有表達(dá)式2 2,而無(wú)表達(dá)式,而無(wú)表達(dá)式1 1和表達(dá)式和表達(dá)式3 3。其作用是每讀入一個(gè)字符后立即輸出該字符,直到輸入其作用是每讀入一個(gè)字符后立即輸出該字符,直到輸入一個(gè)一個(gè)“換行換行”為止。請(qǐng)注意,從終端鍵盤向計(jì)算機(jī)輸入為止。請(qǐng)注意,從終端鍵盤向計(jì)算機(jī)輸入時(shí),

23、是在按時(shí),是在按EnterEnter鍵以后才將一批數(shù)據(jù)一起送到內(nèi)存緩鍵以后才將一批數(shù)據(jù)一起送到內(nèi)存緩沖區(qū)中去的。沖區(qū)中去的。運(yùn)行情況:運(yùn)行情況:ComputerComputer ( (輸入輸入) )Computer (Computer (輸出輸出) )而不是而不是CcoommppuutteerrCcoommppuutteerr 6.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán)注意注意: : C C語(yǔ)言中的語(yǔ)言中的forfor語(yǔ)句比其他語(yǔ)言語(yǔ)句比其他語(yǔ)言( (如如BASICBASIC,PASCAL)PASCAL)中的中的FORFOR語(yǔ)句功能強(qiáng)得多??梢园蜒h(huán)體語(yǔ)句功能強(qiáng)得多??梢园蜒h(huán)體和一些與循環(huán)控制無(wú)關(guān)的操作

24、也作為表達(dá)式和一些與循環(huán)控制無(wú)關(guān)的操作也作為表達(dá)式1 1或或表達(dá)式表達(dá)式3 3出現(xiàn),這樣程序可以短小簡(jiǎn)潔。但過(guò)分出現(xiàn),這樣程序可以短小簡(jiǎn)潔。但過(guò)分地利用這一特點(diǎn)會(huì)使地利用這一特點(diǎn)會(huì)使forfor語(yǔ)句顯得雜亂,可讀性語(yǔ)句顯得雜亂,可讀性降低,最好不要把與循環(huán)控制無(wú)關(guān)的內(nèi)容放到降低,最好不要把與循環(huán)控制無(wú)關(guān)的內(nèi)容放到forfor語(yǔ)句中。語(yǔ)句中。 6.6 循環(huán)的嵌套一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu)一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu) 稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套 循環(huán),這就是多層循環(huán)。循環(huán),這就是多層循環(huán)。三種循環(huán)三種循環(huán)(while(whil

25、e循環(huán)、循環(huán)、do-whiledo-while循環(huán)和循環(huán)和forfor循循 環(huán)環(huán)) )可以互相嵌套??梢曰ハ嗲短住?6.6 循環(huán)的嵌套下面幾種都是合法的形式:下面幾種都是合法的形式:(1) while( ) (2) do (3) for(;) while( ) do for(;) while( ); while( ); 6.6 循環(huán)的嵌套(4) while( ) (5) for(;) (6) do do while( ) for(;) while( ) while( ) 6.7 幾種循環(huán)的比較(1)(1)四種循環(huán)都可以用來(lái)處理同一問(wèn)題,一般情四種循環(huán)都可以用來(lái)處理同一問(wèn)題,一般情況下它們可以互

26、相代替。但一般不提倡用況下它們可以互相代替。但一般不提倡用gotogoto型循環(huán)。型循環(huán)。(2)(2)在在whilewhile循環(huán)和循環(huán)和do-whiledo-while循環(huán)中,只在循環(huán)中,只在whilewhile后面的括號(hào)內(nèi)指定循環(huán)條件,因此為了使循后面的括號(hào)內(nèi)指定循環(huán)條件,因此為了使循環(huán)能正常結(jié)束,應(yīng)在循環(huán)體中包含使循環(huán)趨環(huán)能正常結(jié)束,應(yīng)在循環(huán)體中包含使循環(huán)趨于結(jié)束的語(yǔ)句于結(jié)束的語(yǔ)句( (如如i+i+,或,或i=i+1i=i+1等等) )。 6.7 幾種循環(huán)的比較 for for循環(huán)可以在表達(dá)式循環(huán)可以在表達(dá)式3 3中包含使循環(huán)趨于中包含使循環(huán)趨于結(jié)束的操作,甚至可以將循環(huán)體中的操作全結(jié)束

27、的操作,甚至可以將循環(huán)體中的操作全部放到表達(dá)式部放到表達(dá)式3 3中。因此中。因此forfor語(yǔ)句的功能更強(qiáng)語(yǔ)句的功能更強(qiáng),凡用,凡用whilewhile循環(huán)能完成的,用循環(huán)能完成的,用forfor循環(huán)都能循環(huán)都能實(shí)現(xiàn)。實(shí)現(xiàn)。 (3)(3)用用whilewhile和和do-whiledo-while循環(huán)時(shí),循環(huán)變量初始循環(huán)時(shí),循環(huán)變量初始化的操作應(yīng)在化的操作應(yīng)在whilewhile和和do-whiledo-while語(yǔ)句之前完成語(yǔ)句之前完成。而。而forfor語(yǔ)句可以在表達(dá)式語(yǔ)句可以在表達(dá)式1 1中實(shí)現(xiàn)循環(huán)變量中實(shí)現(xiàn)循環(huán)變量的初始化。的初始化。 6.7 幾種循環(huán)的比較(4)while(4)whi

28、le循環(huán)、循環(huán)、do-whiledo-while循環(huán)和循環(huán)和forfor循環(huán),可以循環(huán),可以用用breakbreak語(yǔ)句跳出循環(huán),用語(yǔ)句跳出循環(huán),用continuecontinue語(yǔ)句結(jié)束本語(yǔ)句結(jié)束本次循環(huán)次循環(huán)(break(break語(yǔ)句和語(yǔ)句和continuecontinue語(yǔ)句見(jiàn)下節(jié)語(yǔ)句見(jiàn)下節(jié)) )。而。而對(duì)用對(duì)用gotogoto語(yǔ)句和語(yǔ)句和ifif語(yǔ)句構(gòu)成的循環(huán),不能用語(yǔ)句構(gòu)成的循環(huán),不能用breakbreak語(yǔ)句和語(yǔ)句和continuecontinue語(yǔ)句進(jìn)行控制。語(yǔ)句進(jìn)行控制。 6.8 break語(yǔ)句和continue語(yǔ)句 6.8.1 break6.8.1 break語(yǔ)句語(yǔ)句 br

29、eakbreak語(yǔ)句可以用來(lái)從循環(huán)體內(nèi)跳出循環(huán)體,語(yǔ)句可以用來(lái)從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語(yǔ)句即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語(yǔ)句 一般形式:一般形式: break;break;注意注意: :breakbreak語(yǔ)句不能用于循環(huán)語(yǔ)句和語(yǔ)句不能用于循環(huán)語(yǔ)句和switchswitch語(yǔ)語(yǔ)句之外的任何其他語(yǔ)句中。句之外的任何其他語(yǔ)句中。 6.8 break語(yǔ)句和continue語(yǔ)句 例例: float pi=3.14159;for(r=1;r100) break; printf(r=%f,area=%fn,r,area); 程序的作用是計(jì)算程序的作用是計(jì)算r=1r=1到

30、到r=10r=10時(shí)的圓面積,直到時(shí)的圓面積,直到面積面積areaarea大于大于100100為止。從上面的為止。從上面的forfor循環(huán)可以循環(huán)可以看到:當(dāng)看到:當(dāng)area100area100時(shí),執(zhí)行時(shí),執(zhí)行breakbreak語(yǔ)句,提前結(jié)語(yǔ)句,提前結(jié)束循環(huán),即不再繼續(xù)執(zhí)行其余的幾次循環(huán)束循環(huán),即不再繼續(xù)執(zhí)行其余的幾次循環(huán)。 6.8 break語(yǔ)句和continue語(yǔ)句 6.8.2 continue6.8.2 continue語(yǔ)句語(yǔ)句 作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的

31、判定循環(huán)的判定. .一般形式:一般形式: continue;continue; 6.8 break語(yǔ)句和continue語(yǔ)句 continuecontinue語(yǔ)句和語(yǔ)句和breakbreak語(yǔ)句的區(qū)別語(yǔ)句的區(qū)別 continuecontinue語(yǔ)句只結(jié)束本次循環(huán),而不是終止語(yǔ)句只結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)的執(zhí)行。整個(gè)循環(huán)的執(zhí)行。 while( (表達(dá)式表達(dá)式1) 1) for if( (表達(dá)式表達(dá)式2) 2) continue; 0 6.8 break語(yǔ)句和continue語(yǔ)句 continue continue和和breakbreak的區(qū)別的區(qū)別 breakbreak語(yǔ)句則是結(jié)束整個(gè)循

32、環(huán)語(yǔ)句則是結(jié)束整個(gè)循環(huán)過(guò)程,不再判斷執(zhí)行循環(huán)的條過(guò)程,不再判斷執(zhí)行循環(huán)的條件是否成立。件是否成立。 while( (表達(dá)式表達(dá)式1) 1) for if( (表達(dá)式表達(dá)式2) 2) break; 例6.5 把100200之間的不能被3整除的數(shù)輸出。#include void main() int n; for (n=100;n=200;n+) if (n%3=0)continue; printf(%d ,n); 1001nn當(dāng)當(dāng)n n能被能被3 3整除時(shí),執(zhí)行整除時(shí),執(zhí)行continuecontinue語(yǔ)句,結(jié)束本次循環(huán)語(yǔ)句,結(jié)束本次循環(huán)( (即跳過(guò)即跳過(guò)printfprintf函函數(shù)語(yǔ)句數(shù)語(yǔ)

33、句) ),只有,只有n n不能被不能被3 3整除時(shí)才執(zhí)行整除時(shí)才執(zhí)行printfprintf函數(shù)。函數(shù)。 6.9 程序舉例 例例6.66.6用用/41-1/3+1/5-1/7+/41-1/3+1/5-1/7+公式求公式求的近似值,直到某一的近似值,直到某一項(xiàng)的絕對(duì)值小于為止。項(xiàng)的絕對(duì)值小于為止。N-SN-S圖表示算法圖表示算法 例6.6 求pi的近似值#include #includevoid main() int s;float n,t,pi; t=1;pi=0;n=1.0;s=1; while(fabs(t)1e-6) pi=pi+t;n=n+2;s=-s;t=s/n; pi=pi*4;

34、printf(pi=%10.6fn,pi);1001nn運(yùn)行結(jié)果:運(yùn)行結(jié)果: pi= 3.141594 6.9 程序舉例 例例6.76.7 求求FibonacciFibonacci數(shù)列前數(shù)列前4040個(gè)數(shù)。這個(gè)數(shù)列有如下個(gè)數(shù)。這個(gè)數(shù)列有如下特點(diǎn):第特點(diǎn):第1 1,2 2兩個(gè)數(shù)為兩個(gè)數(shù)為1 1,1 1。從第。從第3 3個(gè)數(shù)開(kāi)始,該數(shù)個(gè)數(shù)開(kāi)始,該數(shù)是其前面兩個(gè)數(shù)之和。是其前面兩個(gè)數(shù)之和。即即: :F(1)=1 (n=1)F(1)=1 (n=1)F(2)=1 (n=2)F(2)=1 (n=2)F(n)=F(n-1)+F(n-2)F(n)=F(n-1)+F(n-2) (n3) (n3) 算法如圖所示算

35、法如圖所示: :1F例6.7求Fibonacci數(shù)列前40個(gè)數(shù)。#include void main() long int f1,f2; int i; f1=1;f2=1; for(i=1; i=20; i+) printf(%12ld %12ld ,f1,f2); if(i%2=0) printf(n); f1=f1+f2; f2=f2+f1; 1001nn運(yùn)行結(jié)果:運(yùn)行結(jié)果: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 57022887 9227465 14930352 24157817 39088169 63245986 102334155 6.9 程序舉例 例例6.86.8 判斷判斷m m是否素?cái)?shù)。是否素?cái)?shù)。算法思想算法思想: :讓讓m m被被2 2到除,如果到除,如果m m能被能被

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論