C言課件第5章 循環(huán)結(jié)構(gòu)程序設(shè)計

上傳人:仙*** 文檔編號:47531212 上傳時間:2021-12-22 格式:PPT 頁數(shù):49 大?。?.52MB
收藏 版權(quán)申訴 舉報 下載
C言課件第5章 循環(huán)結(jié)構(gòu)程序設(shè)計_第1頁
第1頁 / 共49頁
C言課件第5章 循環(huán)結(jié)構(gòu)程序設(shè)計_第2頁
第2頁 / 共49頁
C言課件第5章 循環(huán)結(jié)構(gòu)程序設(shè)計_第3頁
第3頁 / 共49頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《C言課件第5章 循環(huán)結(jié)構(gòu)程序設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《C言課件第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(49頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、第第5章章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計本章要點本章要點5.1 概述概述5.2 goto語句以及用語句以及用goto語句構(gòu)成循環(huán)語句構(gòu)成循環(huán)5.3 用用while語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)5.4 用用do-while語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)5.5 用用for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán) 5.6 循環(huán)的嵌套循環(huán)的嵌套5.7 幾種循環(huán)的比較幾種循環(huán)的比較5.8 break語句語句continue和語句和語句5.9 程程 序序 舉舉 例例主要內(nèi)容主要內(nèi)容5.1 概述概述什么是循環(huán)?什么是循環(huán)?為什么要使用循環(huán)?為什么要使用循環(huán)?1001nyn問題問題1 1:問題問題2:2: 在許多問題中需要用到循環(huán)

2、控制。循環(huán)結(jié)構(gòu)是結(jié)在許多問題中需要用到循環(huán)控制。循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計的基本結(jié)構(gòu)之一,它和順序結(jié)構(gòu)、選構(gòu)化程序設(shè)計的基本結(jié)構(gòu)之一,它和順序結(jié)構(gòu)、選擇結(jié)構(gòu)共同作為各種復(fù)雜程序的基本構(gòu)造單元。擇結(jié)構(gòu)共同作為各種復(fù)雜程序的基本構(gòu)造單元。5.2 goto語句及用語句及用goto語句構(gòu)成循環(huán)語句構(gòu)成循環(huán) gotogoto語句為無條件轉(zhuǎn)向語句,它的一般形式為語句為無條件轉(zhuǎn)向語句,它的一般形式為 gotogoto 語句標(biāo)號;語句標(biāo)號; 語句標(biāo)號用標(biāo)識符表示,它的定名規(guī)則與變量名相語句標(biāo)號用標(biāo)識符表示,它的定名規(guī)則與變量名相同,即由字母、數(shù)字和下劃線組成,其第一個字符同,即由字母、數(shù)字和下劃線組成,其第一個

3、字符必須為字母或下劃線。必須為字母或下劃線。 例如:例如:gotogoto label_1; label_1; 合法合法; ; gotogoto 123 123; 不合法不合法. .5.2 goto語句及用語句及用goto語句構(gòu)成循環(huán)語句構(gòu)成循環(huán) 結(jié)構(gòu)化程序設(shè)計方法主張限制使用結(jié)構(gòu)化程序設(shè)計方法主張限制使用gotogoto語句,因為語句,因為濫用濫用gotogoto語句將使程序流程無規(guī)律、可讀性差。語句將使程序流程無規(guī)律、可讀性差。一般來說,可以有兩種用途:一般來說,可以有兩種用途:(1 1)與)與ifif語句一起構(gòu)成循環(huán)結(jié)構(gòu);語句一起構(gòu)成循環(huán)結(jié)構(gòu);(2 2)從循環(huán)體中跳轉(zhuǎn)到循環(huán)體外。)從循環(huán)

4、體中跳轉(zhuǎn)到循環(huán)體外。 但是這種用法不符合結(jié)構(gòu)化原則,一般不宜采用,但是這種用法不符合結(jié)構(gòu)化原則,一般不宜采用,只有在不得已時只有在不得已時( (例如能大大提高效率例如能大大提高效率) )才使用。才使用。5.2 goto語句及用語句及用goto語句構(gòu)成循環(huán)語句構(gòu)成循環(huán)例例5.1 用用if語句和語句和goto語句構(gòu)成循環(huán),求語句構(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)型”循循

5、環(huán)環(huán)結(jié)構(gòu),當(dāng)滿足結(jié)構(gòu),當(dāng)滿足“i=100” 時執(zhí)時執(zhí)行花括弧內(nèi)的循環(huán)體。行花括弧內(nèi)的循環(huán)體。 運行結(jié)果:運行結(jié)果:5050while語句用來實現(xiàn)語句用來實現(xiàn)“當(dāng)型當(dāng)型”循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)。一般形式:一般形式: while (表達式表達式) 語句語句 當(dāng)表達式為非當(dāng)表達式為非0值(即為真)時,執(zhí)行值(即為真)時,執(zhí)行while語句語句中的內(nèi)嵌語句。中的內(nèi)嵌語句。 其特點是:先判斷表達式,后執(zhí)行語句。其特點是:先判斷表達式,后執(zhí)行語句。5.3 用用while語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)5.3 用用while語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)例例5.2 求求1到到100的和的和#include void main

6、() int i,sum=0; i=1; while (i=100) sum=sum+i; i+; printf(“%dn”,sum); 說明:說明:(1)循環(huán)體如果包含一個以上)循環(huán)體如果包含一個以上的語句,應(yīng)該用花括弧括起的語句,應(yīng)該用花括弧括起來,以復(fù)合語句形式出現(xiàn);來,以復(fù)合語句形式出現(xiàn);(2)在循環(huán)體中應(yīng)有使循環(huán)趨)在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句。向于結(jié)束的語句。 運行結(jié)果:運行結(jié)果:50505.3 用用while語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)注意:注意:(1 1)循環(huán)體如果包含一個以上的語句,應(yīng)該用花括)循環(huán)體如果包含一個以上的語句,應(yīng)該用花括弧括起來,以復(fù)合語句形式出現(xiàn)?;±ㄆ饋?/p>

7、,以復(fù)合語句形式出現(xiàn)。 (2 2)在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句。如)在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句。如果無此語句,則果無此語句,則i i的值始終不改變,循環(huán)永不結(jié)的值始終不改變,循環(huán)永不結(jié)束。束。死循環(huán)死循環(huán)5.4 用用do-while語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)do-whiledo-while語句的特點語句的特點: :先執(zhí)行循環(huán)體,然后判斷循環(huán)先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。條件是否成立。一般形式一般形式: : do do 循環(huán)體語句循環(huán)體語句 while while ( (表達式表達式) );執(zhí)行過程:執(zhí)行過程: 先執(zhí)行一次指定的循環(huán)體語句,然后判別表達先執(zhí)行一次指定的循

8、環(huán)體語句,然后判別表達式,當(dāng)表達式的值為非零式,當(dāng)表達式的值為非零(“(“真真”) ) 時,返回重時,返回重新執(zhí)行循環(huán)體語句,如此反復(fù),直到表達式的新執(zhí)行循環(huán)體語句,如此反復(fù),直到表達式的值等于值等于0 0(即假)為止,此時循環(huán)結(jié)束。(即假)為止,此時循環(huán)結(jié)束。5.4 用用do-while語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)例例5.3 求求1到到100的和的和#include void main() int i,sum=0; i=1; do sum=sum+i; i+; while(i=100); printf(%dn”,sum);運行結(jié)果:運行結(jié)果:50501001nn5.4 用用do-while語句實

9、現(xiàn)循環(huán)語句實現(xiàn)循環(huán)whilewhile語句和用語句和用do-whiledo-while語句的比較語句的比較: :在一般情況下,用在一般情況下,用whilewhile語句和用語句和用do-whiledo-while語句處理同語句處理同一問題時,若二者的循環(huán)體部分是一樣的,它們的結(jié)一問題時,若二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣。但是如果果也一樣。但是如果whilewhile后面的表達式一開始就為假后面的表達式一開始就為假(0 0值)時,兩種循環(huán)的結(jié)果是不同的。值)時,兩種循環(huán)的結(jié)果是不同的。whilewhile語句執(zhí)語句執(zhí)行行0 0次循環(huán)體,次循環(huán)體,do-whiledo-while語句至

10、少執(zhí)行一次循環(huán)體。語句至少執(zhí)行一次循環(huán)體。5.4 用用do-while語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)例例5.4 while和和do-while循環(huán)的比較循環(huán)的比較 (1) (2)#include #include void main( ) void main( ) int sum=0,i; int sum=0,i; scanf(“%d”,&i); scanf(”%d”,&i); while (i=10) do sum=sum+I; sum=sum+i; i+; i+; while (i=10); printf(“sum=%dn”, printf(“sum=%dn”, sum); sum ); 運行結(jié)

11、果:運行結(jié)果:1 sum=55 再運行一次:再運行一次: 11 sum=0運行結(jié)果:運行結(jié)果:1 sum=55 再運行一次:再運行一次: 11 sum=11說明:說明:當(dāng)當(dāng)whilewhile后面的表達式的第后面的表達式的第一次的值為一次的值為“真真”時,兩種循環(huán)得時,兩種循環(huán)得到的結(jié)果相同。否則,二者結(jié)果不到的結(jié)果相同。否則,二者結(jié)果不相同。相同。5.5 用用for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán) C C語言中的語言中的forfor語句使用最為靈活,不僅可以用于循語句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)

12、結(jié)束條件的情況,它完全可以代確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替替whilewhile語句。語句。 一般形式一般形式: : forfor( (表達式表達式1;1;表達式表達式2;2;表達式表達式3) 3) 語句語句5.5 用用for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)forfor語句的執(zhí)行過程:語句的執(zhí)行過程:(1 1)先求解表達式)先求解表達式1 1。(2 2)求解表達式)求解表達式2 2,若其值為真(值為非,若其值為真(值為非0 0),則),則 執(zhí)行執(zhí)行forfor語句中指定的內(nèi)嵌語句,然后執(zhí)行語句中指定的內(nèi)嵌語句,然后執(zhí)行 下面第(下面第(3 3)步。若為假(值為)步。若為假(值為0 0

13、),則結(jié)束),則結(jié)束 循環(huán),轉(zhuǎn)到第(循環(huán),轉(zhuǎn)到第(5 5)步。)步。(3 3)求解表達式)求解表達式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語句下面的一個語句。語句下面的一個語句。5.5 用用for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)表達式表達式2?執(zhí)行語句執(zhí)行語句成立成立不成立不成立執(zhí)行執(zhí)行for循環(huán)之后的語循環(huán)之后的語句句執(zhí)行表達式執(zhí)行表達式3執(zhí)行表達式執(zhí)行表達式1循環(huán)初始條件循環(huán)初始條件循環(huán)控制條件循環(huán)控制條件循環(huán)體循環(huán)體 for語句等價于下列語句:語句等價于下列語句:表達式表達式1;while (表達式

14、表達式2) 語句語句; 表達式表達式3; 5.5 用用for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)forfor語句最簡單的應(yīng)用形式也就是最易理解的形式如下:語句最簡單的應(yīng)用形式也就是最易理解的形式如下: forfor( (循環(huán)變量賦初值循環(huán)變量賦初值; ;循環(huán)條件循環(huán)條件; ;循環(huán)變量增值循環(huán)變量增值) ) 例如例如: : for(ifor(i=1;i=100;i+) sum=1;i=100;i+) sum=sum+isum+i; ;它相當(dāng)于以下語句:它相當(dāng)于以下語句: i=1;i=1; while(iwhile(i=100)=100) sum= sum=sum+i;isum+i;i+;+; 顯然,用顯然

15、,用for語句簡單、語句簡單、方便。方便。 5.5 用用for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)說明:說明:(1 1)forfor語句的一般形式中的語句的一般形式中的“表達式表達式1”1”可以省略,可以省略,此時應(yīng)在此時應(yīng)在forfor語句之前給循環(huán)變量賦初值。注意省語句之前給循環(huán)變量賦初值。注意省略表達式略表達式1 1時,其后的分號不能省略。如時,其后的分號不能省略。如 for(;i=100;i+) sum=sum+i; 執(zhí)行時,跳過執(zhí)行時,跳過“求解表達式求解表達式1”1”這一步,其他不變。這一步,其他不變。5.5 用用for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)說明:說明:(2 2)如果表達式)如果表達式2

16、 2省略,即不判斷循環(huán)條件,循環(huán)無省略,即不判斷循環(huán)條件,循環(huán)無終止地進行下去。也就是認為表達式終止地進行下去。也就是認為表達式2 2始終為真。始終為真。例如:例如:for(i=1; ;i+) sum=sum+i; 表達式表達式1 1是一個賦值表達式,表達式是一個賦值表達式,表達式2 2空缺。它相當(dāng)于:空缺。它相當(dāng)于: i=1; while(1) sum=sum+1;i+; 5.5 用用for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)說明:說明:(3 3)表達式)表達式3 3也可以省略,但此時程序設(shè)計者應(yīng)另外也可以省略,但此時程序設(shè)計者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束。如:設(shè)法保證循環(huán)能正常結(jié)束。如: for(i

17、=1;i=100;) sum=sum+i; i+; 在上面的在上面的forfor語句中只有表達式語句中只有表達式1 1和表達式和表達式2 2,而沒,而沒有表達式有表達式3 3。i+i+的操作不放在的操作不放在forfor語句的表達式語句的表達式3 3的的位置處,而作為循環(huán)體的一部分,效果是一樣的,位置處,而作為循環(huán)體的一部分,效果是一樣的,都能使循環(huán)正常結(jié)束。都能使循環(huán)正常結(jié)束。 5.5 用用for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)說明:說明:(4 4)可以省略表達式)可以省略表達式1 1和表達式和表達式3 3,只有表達式,只有表達式2 2,即,即只給循環(huán)條件。如:只給循環(huán)條件。如: for(;i=1

18、00;) while(i=100) sum=sum+i; 相當(dāng)于相當(dāng)于 sum=sum+i; i+; i+; 在這種情況下,完全等同于在這種情況下,完全等同于whilewhile語句??梢娬Z句??梢奻orfor語句語句比比whilewhile語句功能強,除了可以給出循環(huán)條件外,還語句功能強,除了可以給出循環(huán)條件外,還可以賦初值,使循環(huán)變量自動增值等??梢再x初值,使循環(huán)變量自動增值等。5.5 用用for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)說明:說明:(5 5)3 3個表達式都可省略,如:個表達式都可省略,如: for(; ;) for(; ;) 語句語句 相當(dāng)于相當(dāng)于 while(1) while(1)

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

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

21、現(xiàn)循環(huán)語句實現(xiàn)循環(huán)說明:說明:在逗號表達式內(nèi)按自左至右順序求解,整個逗號表達在逗號表達式內(nèi)按自左至右順序求解,整個逗號表達式的值為其中最右邊的表達式的值。如式的值為其中最右邊的表達式的值。如: : 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; 5.5 用用for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)說明:說明:(7 7)表達式一般是關(guān)系表達式)表達式一般是關(guān)系表達式( (如如i=100)i=100)或邏輯表或邏輯表達式(如達式(如ab & xyab & xy),但也可以是數(shù)值表達式或),但也可以是數(shù)值表達式或字符

22、表達式,只要其值為非零,就執(zhí)行循環(huán)體。字符表達式,只要其值為非零,就執(zhí)行循環(huán)體。5.5 用用for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)說明:說明: for(i=0;(c=getchar()!=n;i+=c); 在表達式在表達式2 2中先從終端接收一個字符賦給中先從終端接收一個字符賦給c c,然后判,然后判斷此賦值表達式的值是否不等于斷此賦值表達式的值是否不等于nn(換行符),(換行符),如果不等于如果不等于nn,就執(zhí)行循環(huán)體。,就執(zhí)行循環(huán)體。注意:注意: 此此forfor語句的循環(huán)體為空語句,把本來要在循環(huán)體語句的循環(huán)體為空語句,把本來要在循環(huán)體內(nèi)處理的內(nèi)容放在表達式內(nèi)處理的內(nèi)容放在表達式3 3中,作用

23、是一樣的??芍校饔檬且粯拥???梢娨奻orfor語句功能強,可以在表達式中完成本來應(yīng)在語句功能強,可以在表達式中完成本來應(yīng)在循環(huán)體內(nèi)完成的操作。循環(huán)體內(nèi)完成的操作。5.5 用用for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)說明:說明: for( ;(c=for( ;(c=getchargetchar()!=n;)()!=n;) printf(%cprintf(%c,c);c); for for語句中只有表達式語句中只有表達式2 2,而無表達式,而無表達式1 1和表達式和表達式3 3。 其作用是每讀入一個字符后立即輸出該字符,直到其作用是每讀入一個字符后立即輸出該字符,直到輸入一個輸入一個“換行換行”為止。請

24、注意,從終端鍵盤向計為止。請注意,從終端鍵盤向計算機輸入時,是在按算機輸入時,是在按EnterEnter鍵以后才將一批數(shù)據(jù)一鍵以后才將一批數(shù)據(jù)一起送到內(nèi)存緩沖區(qū)中去的。起送到內(nèi)存緩沖區(qū)中去的。運行情況:運行情況:Computer (輸入輸入)Computer (輸出輸出)而不是而不是Ccoommppuutteerr5.5 用用for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)注意注意: : C C語言中的語言中的forfor語句比其他語言(如語句比其他語言(如BASICBASIC,PASCALPASCAL)中的)中的FORFOR語句功能強得多??梢园蜒h(huán)體和語句功能強得多??梢园蜒h(huán)體和一些與循環(huán)控制無關(guān)的操作

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

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

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

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

29、4 4)whilewhile循環(huán)、循環(huán)、do-whiledo-while循環(huán)和循環(huán)和forfor循環(huán),可以用循環(huán),可以用breakbreak語句跳出循環(huán),用語句跳出循環(huán),用continuecontinue語句結(jié)束本次循環(huán)語句結(jié)束本次循環(huán)(breakbreak語句和語句和continuecontinue語句見下節(jié))。而對用語句見下節(jié))。而對用gotogoto語句和語句和ifif語句構(gòu)成的循環(huán),不能用語句構(gòu)成的循環(huán),不能用breakbreak語句和語句和continuecontinue語句進行控制。語句進行控制。5.8 break語句和語句和continue語句語句 breakbreak語句語句

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

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

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

33、reak語句則是結(jié)束整個循環(huán)過程,不再判斷執(zhí)行循語句則是結(jié)束整個循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立。環(huán)的條件是否成立。while( (表達式表達式1) 1) for if( (表達式表達式2) 2) break; 5.8 break語句和語句和continue語句語句 例例5.5 把把100200之間的不能被之間的不能被3整除的數(shù)輸出。整除的數(shù)輸出。 #include void main() int n; for(n=100;n=200;n+) if (n%3=0) continue; printf(%d”,n); 說明:說明:當(dāng)當(dāng)n能被能被3整除時,執(zhí)整除時,執(zhí)行行continue語句

34、,結(jié)束本次語句,結(jié)束本次循環(huán)(即跳過循環(huán)(即跳過printf函數(shù)語函數(shù)語句),只有句),只有n不能被不能被3整除時整除時才執(zhí)行才執(zhí)行printf函數(shù)。函數(shù)。5.9 程序舉例程序舉例例例5.6 用用/41-1/3+1/5-1/7+公式求公式求的近似值,的近似值,直到某一項的絕對值小于直到某一項的絕對值小于0.000001為止。為止。例例5.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

35、=s/n; pi=pi*4; printf(“pi=%10.6fn”,pi);運行結(jié)果:運行結(jié)果: pi= 3.1415945.9 程序舉例程序舉例例例5.7 求求Fibonacci數(shù)列前數(shù)列前40個數(shù)。這個數(shù)列有如下個數(shù)。這個數(shù)列有如下特點:第特點:第1,2兩個數(shù)為兩個數(shù)為1,1。從第。從第3個數(shù)開始,該個數(shù)開始,該數(shù)是其前面兩個數(shù)之和。即數(shù)是其前面兩個數(shù)之和。即: F(1)=1 (n=1) F(2)=1 (n=2) F(n)=F(n-1)+F(n-2) (n3) 5.9 程序舉例程序舉例例例5.7 求求Fibonacci數(shù)列前數(shù)列前40個數(shù)。個數(shù)。 #include void main()

36、 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; 運行結(jié)果:運行結(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 5702288

37、7 9227465 14930352 24157817 39088169 63245986 102334155 5.9 程序舉例程序舉例例例5.8 判斷判斷m是否素數(shù)。是否素數(shù)。算法思想:算法思想: 讓讓m被被2倒除,如果倒除,如果m能被能被2k之中任何一個整數(shù)整之中任何一個整數(shù)整除,則提前結(jié)束循環(huán),此時除,則提前結(jié)束循環(huán),此時i必然小于或等于必然小于或等于k(即即);如果如果m不能被不能被2k(即即)之間的任一整數(shù)整除,則在完之間的任一整數(shù)整除,則在完成最后一次循環(huán)后,成最后一次循環(huán)后,i還要加還要加1,因此,因此i=k+1,然后才,然后才終止循環(huán)。在循環(huán)之后判別終止循環(huán)。在循環(huán)之后判別i的

38、值是否大于或等于的值是否大于或等于k+1,若是,則表明未曾被,若是,則表明未曾被2k之間任一整數(shù)整除之間任一整數(shù)整除過,因此輸出過,因此輸出“是素數(shù)是素數(shù)”。 k的取值:的取值:k=m-1 或或 k=sqrt(m)都可以都可以5.9 程序舉例程序舉例例例5.8 判斷判斷m是否素數(shù)。是否素數(shù)。 #include #include void main() int m,i,k; scanf(“%d”,&m); k=sqrt(m); for(i=2;ik) printf(“%d is a prime numbern”,m); else printf(%d is not a prime numbern”

39、,m); 運行結(jié)果:運行結(jié)果: 17 17 is a prime number 5.9 程序舉例程序舉例例例5.9 求求100200間的全部素數(shù)。間的全部素數(shù)。#include # include void main() int m,k,i,n=0; for(m=101;m=200;m=m+2) k=sqrt(m); for (i=2;i=k+1) printf(%d ”,m); n=n+1; if(n%10=0) printf(“n”); printf (n); 運行結(jié)果:運行結(jié)果: 101 103 107 109 113 127 131 137 139 149151 157 163 167

40、 173 179 181 191 193 197199 5.9 程序舉例程序舉例例例5.10 譯密碼。為使電文保密,往往按一定規(guī)律將其譯密碼。為使電文保密,往往按一定規(guī)律將其轉(zhuǎn)換成密碼,收報人再按約定的規(guī)律將其譯回原文。轉(zhuǎn)換成密碼,收報人再按約定的規(guī)律將其譯回原文。例如:例如:可以按以下規(guī)律將電文變成密碼:可以按以下規(guī)律將電文變成密碼: 將字母將字母A變成字母變成字母E,a變成變成e,即變成其后的第,即變成其后的第4個個字母,字母,W變成變成A,X變成變成B,Y變成變成C,Z變成變成D。5.9 程序舉例程序舉例例例5.10 輸入一行字符,要求輸出其相應(yīng)的密碼輸入一行字符,要求輸出其相應(yīng)的密碼#include void main() char c; while(c=getchar()!=n) if(c=a & c=A & cZ & cz) c=c-26; printf(“%cn”,c); 運行結(jié)果:運行結(jié)果: China! Glmre!

展開閱讀全文
溫馨提示:
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)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!