5_第6章_循環(huán)(2014)_第1頁(yè)
5_第6章_循環(huán)(2014)_第2頁(yè)
5_第6章_循環(huán)(2014)_第3頁(yè)
5_第6章_循環(huán)(2014)_第4頁(yè)
5_第6章_循環(huán)(2014)_第5頁(yè)
已閱讀5頁(yè),還剩52頁(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、第六章 循環(huán)控制(Cycle Control)了解了解goto語(yǔ)句和語(yǔ)句和if 語(yǔ)句構(gòu)成的循環(huán)。語(yǔ)句構(gòu)成的循環(huán)。熟練掌握熟練掌握f(shuō)or循環(huán)語(yǔ)句、循環(huán)語(yǔ)句、while循環(huán)語(yǔ)句和循環(huán)語(yǔ)句和do-while循環(huán)語(yǔ)句,以及循環(huán)語(yǔ)句,以及break語(yǔ)句、語(yǔ)句、continue語(yǔ)句的使用。語(yǔ)句的使用。 熟練掌握循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的概念及其熟練掌握循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的概念及其程序編制技術(shù)。程序編制技術(shù)。void main()int i=1;long int sigma=1; while (i=10) sigma=sigma*i; i+; printf(“10!=%ldn”, sigma);sigma=1*2*3

2、*4*5*6*7*8*9*10;10!=3628800sigma思考:如果不使用long int,還可以使用什么變量類型定義sigma循環(huán)結(jié)構(gòu)的程序流程是:循環(huán)結(jié)構(gòu)的程序流程是:在滿足給定條件時(shí),反復(fù)執(zhí)行某個(gè)程序段。在滿足給定條件時(shí),反復(fù)執(zhí)行某個(gè)程序段。語(yǔ)言中可以用以下語(yǔ)句來(lái)實(shí)現(xiàn)循環(huán):語(yǔ)言中可以用以下語(yǔ)句來(lái)實(shí)現(xiàn)循環(huán): 用用goto語(yǔ)句和語(yǔ)句和 if 語(yǔ)句構(gòu)成循環(huán);語(yǔ)句構(gòu)成循環(huán); 用用while語(yǔ)句;語(yǔ)句; 用用do_while語(yǔ)句語(yǔ)句; 用用for語(yǔ)句。語(yǔ)句。 6.2 goto語(yǔ)句和goto語(yǔ)句構(gòu)成的循環(huán)一、一、 goto 語(yǔ)句(語(yǔ)句(Goto Sentence) goto 語(yǔ)句為無(wú)條件轉(zhuǎn)向語(yǔ)

3、句,其作用為:使程序的執(zhí)行無(wú)條件地轉(zhuǎn)移到指定處。一般形式:一般形式: goto 語(yǔ)句標(biāo)號(hào); 執(zhí)行過(guò)程:執(zhí)行過(guò)程:執(zhí)行語(yǔ)句時(shí),程序轉(zhuǎn)移到以標(biāo)號(hào)(定名規(guī)則與變量相同)為前綴的語(yǔ)句處繼續(xù)執(zhí)行。如:向前跳如:向前跳goto label;goto label;label:label:語(yǔ)句;語(yǔ)句;向后跳向后跳label:label:語(yǔ)句;語(yǔ)句;goto label;goto label;如:如: goto label_1; goto 123;說(shuō)明: C語(yǔ)言允許在任何語(yǔ)句前加一個(gè)語(yǔ)句標(biāo)號(hào),作為語(yǔ)言允許在任何語(yǔ)句前加一個(gè)語(yǔ)句標(biāo)號(hào),作為goto語(yǔ)句的目標(biāo)。給語(yǔ)句加標(biāo)號(hào)的形式:語(yǔ)句的目標(biāo)。給語(yǔ)句加標(biāo)號(hào)的形式: 語(yǔ)

4、句標(biāo)號(hào):語(yǔ)句語(yǔ)句標(biāo)號(hào):語(yǔ)句 goto語(yǔ)句是一種非結(jié)構(gòu)化語(yǔ)句,結(jié)構(gòu)化程序設(shè)語(yǔ)句是一種非結(jié)構(gòu)化語(yǔ)句,結(jié)構(gòu)化程序設(shè)計(jì)方法計(jì)方法不提倡不提倡使用使用goto語(yǔ)句,因?yàn)闉E用語(yǔ)句,因?yàn)闉E用goto語(yǔ)句語(yǔ)句將使程序流程無(wú)規(guī)律,可讀性差。但也不是絕對(duì)將使程序流程無(wú)規(guī)律,可讀性差。但也不是絕對(duì)禁止使用,只有在能夠大大提高程序效率時(shí)才使禁止使用,只有在能夠大大提高程序效率時(shí)才使用。用。切記:不要從循環(huán)體外跳到循環(huán)體內(nèi)切記:不要從循環(huán)體外跳到循環(huán)體內(nèi)!二、用二、用goto語(yǔ)句和語(yǔ)句和 if 語(yǔ)句語(yǔ)句構(gòu)成循環(huán)構(gòu)成循環(huán)例:計(jì)算例:計(jì)算10!并輸出結(jié)果。!并輸出結(jié)果。void main()int i=1, sum=1;l

5、oop: if (i=10) sum=sum*i; i+; goto loop; printf(“10!=%dn”,sum);運(yùn)行結(jié)果:10!=24320本應(yīng)是:10!=3628800void main()int i=1; long sum=1;loop: if (i=10) sum=sum*i; i+; goto loop; printf(“10!=%ldn”,sum);6.3 while循環(huán)語(yǔ)句 一般形式:一般形式: while (表達(dá)式表達(dá)式) 語(yǔ)句語(yǔ)句 執(zhí)行過(guò)程:執(zhí)行過(guò)程: 先計(jì)算表達(dá)式的值先計(jì)算表達(dá)式的值 ;若表達(dá)式的值為真若表達(dá)式的值為真(非非0) 時(shí)執(zhí)行循環(huán)體中的語(yǔ)時(shí)執(zhí)行循環(huán)體中

6、的語(yǔ) 句,然后重復(fù)上面步驟。句,然后重復(fù)上面步驟。 若表達(dá)式的值為假若表達(dá)式的值為假(0) , 則結(jié)束循環(huán)。則結(jié)束循環(huán)。例:將上面計(jì)算例:將上面計(jì)算10!并輸出結(jié)果的程序用!并輸出結(jié)果的程序用 while語(yǔ)句寫(xiě)出:語(yǔ)句寫(xiě)出:/用while循環(huán)語(yǔ)句void main() int i=1; long int sum=1; while (i=10) sum=sum*i; i+; printf(“10!=%ldn”,sum); /用goto語(yǔ)句 void main() int i=1; long int sum=1; loop: if (i=10) sum=sum*i; i+; goto loop;

7、printf(“10!=%ldn”,sum); 例:計(jì)算例:計(jì)算y=xnEnter the value of x and n : 2.5 4x = 2.500000; n = 4; x to power n = 39.062500void main() int count=1,n; float x,y=1.0; printf(“Enter the value of x and n : ”); scanf(“%f %d”,&x,&n); while(count=n)/測(cè)試表達(dá)式 y=y*x; count+; printf(“nx = %f; n = %d; x to power n = %fn”

8、,x,n,y); 循環(huán)結(jié)構(gòu)的術(shù)語(yǔ)循環(huán)結(jié)構(gòu)的術(shù)語(yǔ) 1. 循環(huán)條件循環(huán)條件: 是循環(huán)結(jié)構(gòu)中的測(cè)試表達(dá)式。是循環(huán)結(jié)構(gòu)中的測(cè)試表達(dá)式。如:while(i=10) 2. 循環(huán)體循環(huán)體:是在每個(gè)循環(huán)周期均要執(zhí)行一次的語(yǔ)是在每個(gè)循環(huán)周期均要執(zhí)行一次的語(yǔ) 句。循環(huán)體可以是任何語(yǔ)句,簡(jiǎn)單語(yǔ)句。循環(huán)體可以是任何語(yǔ)句,簡(jiǎn)單語(yǔ)句、復(fù)合語(yǔ)句、空語(yǔ)句均可以。句、復(fù)合語(yǔ)句、空語(yǔ)句均可以。如:上例while語(yǔ)句中用花括號(hào)括起來(lái)的復(fù)合語(yǔ)句。 3. 循環(huán)控制變量循環(huán)控制變量:在循環(huán)條件中控制測(cè)試條件為在循環(huán)條件中控制測(cè)試條件為真或?yàn)榧俚淖兞俊U婊驗(yàn)榧俚淖兞?。如:上例while語(yǔ)句中使用的變量 i 。注意注意: 循環(huán)條件中的表達(dá)式

9、一般是循環(huán)條件中的表達(dá)式一般是邏輯表達(dá)式邏輯表達(dá)式或或關(guān)系關(guān)系表達(dá)式表達(dá)式,也可以是,也可以是算術(shù)表達(dá)式算術(shù)表達(dá)式(非(非0為真,為真,0為為假)。一般表達(dá)式中應(yīng)含有循環(huán)控制變量。假)。一般表達(dá)式中應(yīng)含有循環(huán)控制變量。 while (3)while (0)雖然從程序設(shè)計(jì)的角度上說(shuō)是不合理的,但卻是雖然從程序設(shè)計(jì)的角度上說(shuō)是不合理的,但卻是合法的。合法的。while (3) 語(yǔ)句 表示無(wú)限循環(huán)while (0) 語(yǔ)句 表示不進(jìn)入循環(huán)體 要寫(xiě)出一個(gè)正確的循環(huán)結(jié)構(gòu),對(duì)控制變量要要寫(xiě)出一個(gè)正確的循環(huán)結(jié)構(gòu),對(duì)控制變量要做三方面工作:做三方面工作:控制變量賦初值控制變量賦初值;把控制變量寫(xiě)入正確的循環(huán)條件

10、(測(cè)試表達(dá)式);把控制變量寫(xiě)入正確的循環(huán)條件(測(cè)試表達(dá)式);控制變量的更新、調(diào)整??刂谱兞康母?、調(diào)整。 int count=1; while(count=n)/測(cè)試表達(dá)式 y=y*x; count+; 6.4 do-while循環(huán)語(yǔ)句 一般形式:一般形式: do 語(yǔ)句語(yǔ)句 while(表達(dá)式);表達(dá)式);分號(hào)不能少 執(zhí)行過(guò)程:執(zhí)行過(guò)程:執(zhí)行循環(huán)體中的語(yǔ)句;執(zhí)行循環(huán)體中的語(yǔ)句;計(jì)算表達(dá)式,測(cè)試循環(huán)計(jì)算表達(dá)式,測(cè)試循環(huán) 條件,為真條件,為真(非非0)則重復(fù)則重復(fù) 上面步驟,為假上面步驟,為假(0)結(jié)束循結(jié)束循 環(huán)。環(huán)。例:將上面計(jì)算例:將上面計(jì)算10!并輸出結(jié)果的程序用!并輸出結(jié)果的程序用do-

11、while語(yǔ)語(yǔ)句寫(xiě)出:句寫(xiě)出:/用while循環(huán)語(yǔ)句void main() int i=1; long int sum=1; while (i=10) sum=sum*i; i+; printf(“10!=%ldn”,sum); /用do-while循環(huán)語(yǔ)句void main() int i=1; long int sum=1; do sum=sum*i; i+; while (i=10); printf(“10!=%ldn”,sum); 將將while和和do-while循環(huán)做一下比較循環(huán)做一下比較:#includevoid main() int i; long sum=1; scanf(“

12、%d”,&i); while (i=10) sum=sum*i; i+; printf(“%ldn”,sum); #includevoid main() int i; long sum=1; scanf(“%d”,&i); do sum=sum*i; i+; while (i=10); printf(“%ldn”,sum); 輸入:9輸出:90輸入:11輸出:1輸入:9輸出:90輸入:11輸出:11 比較上面兩個(gè)程序,雖然結(jié)構(gòu)是相同的,在輸比較上面兩個(gè)程序,雖然結(jié)構(gòu)是相同的,在輸入值為有效值時(shí)結(jié)果相同,但當(dāng)輸入無(wú)效值時(shí)輸出入值為有效值時(shí)結(jié)果相同,但當(dāng)輸入無(wú)效值時(shí)輸出結(jié)果是不同的。為什么?結(jié)果是

13、不同的。為什么? 而do-while語(yǔ)句先執(zhí)行循環(huán)體,然后測(cè)試循環(huán)條件。不管開(kāi)始的時(shí)候測(cè)試循環(huán)條件是真是假,循環(huán)體都要執(zhí)行一次。 while語(yǔ)句進(jìn)入循環(huán)體之前,先測(cè)試循環(huán)條件,表達(dá)式必須為真;否則while循環(huán)不進(jìn)入循環(huán)體,即循環(huán)體可能一次也不執(zhí)行。while與與do-while的主要區(qū)別:的主要區(qū)別:6.5 forfor循環(huán)語(yǔ)句循環(huán)語(yǔ)句 一般形式:一般形式: for(表達(dá)式表達(dá)式1 ;表達(dá)式;表達(dá)式2 ;表達(dá)式;表達(dá)式3) 語(yǔ)句語(yǔ)句(循環(huán)體循環(huán)體)不能省略不能省略不能省略不能省略執(zhí)行過(guò)程:執(zhí)行過(guò)程: 求出表達(dá)式求出表達(dá)式1的值,若表達(dá)式的值,若表達(dá)式1是逗號(hào)表達(dá)式,則依次計(jì)算;是逗號(hào)表達(dá)式,

14、則依次計(jì)算; 對(duì)對(duì)“表達(dá)式表達(dá)式2”進(jìn)行判斷,為進(jìn)行判斷,為真轉(zhuǎn),為假則退出循環(huán);真轉(zhuǎn),為假則退出循環(huán);執(zhí)行循環(huán)體中語(yǔ)句;執(zhí)行循環(huán)體中語(yǔ)句; 執(zhí)行執(zhí)行“表達(dá)式表達(dá)式3”,若表達(dá)式,若表達(dá)式3是逗號(hào)表達(dá)式,則依次計(jì)算;是逗號(hào)表達(dá)式,則依次計(jì)算; 轉(zhuǎn)向。轉(zhuǎn)向。表達(dá)式1:變量初始化表達(dá)式2:循環(huán)控制條件測(cè)試表達(dá)式3:控制變量更新 前面已經(jīng)說(shuō)明,要正確表達(dá)循環(huán)結(jié)構(gòu)應(yīng)注意三方面的問(wèn)題:控制變量的初始化,循環(huán)條件的設(shè)置和控制變量的更新。 for語(yǔ)句在書(shū)寫(xiě)形式上正好體現(xiàn)了這種緊密的邏輯關(guān)系。例:將上面計(jì)算例:將上面計(jì)算10!的程序用!的程序用 for語(yǔ)句寫(xiě)出:語(yǔ)句寫(xiě)出:main() int i; long

15、sum=1; for(i=1; i=10; i+) sum=sum*i; printf(“10!=%ldn”,sum); main() int i; long sum; for(i=1,sum=1; i=10; sum=sum*i, i+) ; printf(“10!=%ldn”,sum); 空語(yǔ)句說(shuō)明說(shuō)明:表達(dá)式1:用于進(jìn)入循環(huán)體之前給某些變量賦初值。 若省略,可在for語(yǔ)句前給變量賦初值。main() int i; long sum=1; i=1; for( ; i=10; i+) sum=sum*i; printf(“10!=%ldn”,sum); for 循環(huán)的三個(gè)表達(dá)式起著不同的作用

16、,循環(huán)的三個(gè)表達(dá)式起著不同的作用, 根據(jù)需要可以省略。根據(jù)需要可以省略。 表達(dá)式2:決定循環(huán)的條件,若省略,則為無(wú)限 循環(huán)。 如: for(i0; ;i+) 語(yǔ)句 for( ; ; ) 語(yǔ)句 for(i0;i=10;i-) 語(yǔ)句無(wú)限循環(huán)(死循環(huán))表達(dá)式3:用于循環(huán)一次后對(duì)某些變量進(jìn)行修改。 若省略,可在循環(huán)體內(nèi)對(duì)變量進(jìn)行修改。 main() int i; long sum=1; for(i=1 ; i=10 ; ) sum=sum*i; i+; printf(“10!=%ldn”,sum); for語(yǔ)句功能很強(qiáng),其中表達(dá)式語(yǔ)句功能很強(qiáng),其中表達(dá)式1和表達(dá)式和表達(dá)式3可以可以是逗號(hào)表達(dá)式,但為增

17、強(qiáng)程序的可讀性,一般不要是逗號(hào)表達(dá)式,但為增強(qiáng)程序的可讀性,一般不要把與循環(huán)無(wú)關(guān)的東西放到把與循環(huán)無(wú)關(guān)的東西放到for語(yǔ)句中。語(yǔ)句中。如:sum=1; for(i=1 ; i=10 ; i+) sum=sum*i; for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)語(yǔ)句for語(yǔ)句最簡(jiǎn)單、常用的形式如下:語(yǔ)句最簡(jiǎn)單、常用的形式如下: for 語(yǔ)句最為靈活,它完全可以代替語(yǔ)句最為靈活,它完全可以代替while語(yǔ)句。語(yǔ)句。如:i=1; while(i=10) sum=sum*i; i+; 等效于for(i=1;i=10;i+) sum=sum*i;6.6 三種循環(huán)語(yǔ)句的總結(jié)三種循環(huán)語(yǔ)句的總結(jié) 三種循環(huán)

18、語(yǔ)句共同的特點(diǎn)是:當(dāng)循環(huán)控制條件非零時(shí),執(zhí)行循環(huán)體語(yǔ)句,否則終止循環(huán)。循環(huán)體循環(huán)體語(yǔ)句可以是任何語(yǔ)句,簡(jiǎn)單語(yǔ)句、復(fù)合語(yǔ)句、空語(yǔ)句均可以。for(expression 1) Setence 1;Setence 2;Setence 3;if(e1)S1;S2;else if(e2)S3;while和for語(yǔ)句先判斷循環(huán)控制條件,所以它們的循環(huán)體可能一次也不執(zhí)行;而do-while語(yǔ)句后判斷循環(huán)控制條件,它至少執(zhí)行一次循環(huán)體。在循環(huán)條件中或循環(huán)體內(nèi)必須有使循環(huán)趨于結(jié)束的語(yǔ)句,否則會(huì)出現(xiàn)死循環(huán)等異常情況。三種循環(huán)可以處理同一問(wèn)題,一般情況可以互相代替。但在實(shí)際應(yīng)用中,我們要根據(jù)具體情況來(lái)選用不同的循環(huán)

19、語(yǔ)句。選用的一般原則如下: 如果循環(huán)次數(shù)在執(zhí)行循環(huán)體之前就已確定,一般用如果循環(huán)次數(shù)在執(zhí)行循環(huán)體之前就已確定,一般用for語(yǔ)句;如果循環(huán)次數(shù)是根據(jù)循環(huán)體的執(zhí)行情況確語(yǔ)句;如果循環(huán)次數(shù)是根據(jù)循環(huán)體的執(zhí)行情況確定的,一般用定的,一般用while語(yǔ)句或者語(yǔ)句或者do-while語(yǔ)句。語(yǔ)句。 (循環(huán)次數(shù)確定例)int i,n;long sum=1;scanf(“%d”,n);for(i=1;i=n;i+) sum=sum*i;(循環(huán)次數(shù)不確定例)char cdo c=getchar(); printf(“%c”,c); while(c!=q&c!=Q);當(dāng)循環(huán)體至少執(zhí)行一次時(shí),用當(dāng)循環(huán)體至少執(zhí)行一次時(shí)

20、,用do-while語(yǔ)句;反之,語(yǔ)句;反之,如果循環(huán)體可能一次也不執(zhí)行時(shí),用如果循環(huán)體可能一次也不執(zhí)行時(shí),用while語(yǔ)句。語(yǔ)句。 (循環(huán)體至少執(zhí)行一次)/*只有當(dāng)用戶鍵入q或Q,才結(jié)束循環(huán)*/char c;do c=getchar(); printf(“%c”,c); while(c!=q&c!=Q);(循環(huán)體可能一次不執(zhí)行)/*只有不是q或Q的字符才被打印*/char c;c=getchar();while (c!=q&c!=Q); printf(“%c”,c); c=getchar(); 注意:!(a&b)=!a|!b !(a|b)=!a&!b所以:c!=q&c!=Q !(c=q|c=Q

21、)6.7 循環(huán)的嵌套循環(huán)的嵌套 例:在屏幕上打印一個(gè)例:在屏幕上打印一個(gè)8行行7列的星號(hào)矩陣。列的星號(hào)矩陣。 #include void main() int i; for( i=0; i7; i+ ) printf(*); /*打印第1行星號(hào)*/ printf(n); for( i=0; i7; i+ ) printf(*); /*打印第2行星號(hào)*/ printf(n); for( i=0; i7; i+ ) printf(“*”);/*打印第8行星號(hào)*/什么叫循環(huán)嵌套?什么叫循環(huán)嵌套? 一個(gè)循環(huán)的循環(huán)體中套有另一個(gè)循環(huán)叫循環(huán)嵌套。這種嵌套過(guò)程可以一直重復(fù)下去。 一個(gè)循環(huán)外面包圍一層循環(huán)稱為

22、二重循環(huán)二重循環(huán)。一個(gè)循環(huán)外面包圍二層循環(huán)稱為三重循環(huán)重循環(huán)。一個(gè)循環(huán)外面包圍多層循環(huán)稱為多重循環(huán)多重循環(huán)。 while、do-while、for可以互相嵌套,自由組合。 例:將上例(打印例:將上例(打印8行行7列的星號(hào)矩形)用二重循環(huán)實(shí)現(xiàn)。列的星號(hào)矩形)用二重循環(huán)實(shí)現(xiàn)。 #include void main() int i , k; for( i=0; i8; i+ ) for( k=0; k7; k+ ) printf(*); printf(n); 例:在顯示器上輸出以下圖案。例:在顯示器上輸出以下圖案。 #include void main() int i ,j, k; for( i=0

23、; i6; i+ )/i=1;i7或者i=1;i=6 for(j=0;j5-i;j+) printf( ); for( k=0; k2*i+1; k+ ) printf(*); printf(n); 0123456789010 * 1 * 2 * 3 *4 *5*6.8 break 和和continue語(yǔ)句語(yǔ)句 一、break 語(yǔ)句語(yǔ)句一般形式:一般形式: break ;功能:功能:結(jié)束當(dāng)前的循環(huán)語(yǔ)句。結(jié)束當(dāng)前的循環(huán)語(yǔ)句。 解釋:解釋:break 語(yǔ)句一般用在循環(huán)體的條件語(yǔ)語(yǔ)句一般用在循環(huán)體的條件語(yǔ) 句中,其作用是當(dāng)某個(gè)條件滿足時(shí)用句中,其作用是當(dāng)某個(gè)條件滿足時(shí)用 break語(yǔ)語(yǔ)句退出句退出當(dāng)

24、前當(dāng)前循環(huán)語(yǔ)句,不再繼續(xù)執(zhí)循環(huán)語(yǔ)句,不再繼續(xù)執(zhí) 行剩余的幾次循環(huán)。行剩余的幾次循環(huán)。例:打印半徑為例:打印半徑為110的圓的面積,如果面積超過(guò)的圓的面積,如果面積超過(guò)100,則不再打印。,則不再打印。 #include #define PI=3.14159/符號(hào)常量main() int r; float area; for(r=1; r100.0) break;/r=6 printf(r=%2d,area=%fn,r,area); printf(now, r=%dn,r); 錯(cuò)誤!錯(cuò)誤!注意:注意:在嵌套循環(huán)中使用break語(yǔ)句,它只影響包含它的最內(nèi)層循環(huán),即程序僅跳出包圍該break的那層循

25、環(huán)。 例:編寫(xiě)程序,輸出九九乘法表。編寫(xiě)程序,輸出九九乘法表。main( ) int i, j; printf( ); for( j=1; j= 9; j+) printf(“%3d”, j );/打印行乘數(shù)打印行乘數(shù) printf(n); for( i=1; i= 9; i+) printf(“%3d”, i ); );/打印列乘數(shù)打印列乘數(shù) for( j=1; ji ) break; printf(“%3d”, i*j ); printf(“n”); 運(yùn)行結(jié)果:一般形式:一般形式: continue ;功能:功能:結(jié)束本次循環(huán),進(jìn)入下一個(gè)循環(huán)周期。結(jié)束本次循環(huán),進(jìn)入下一個(gè)循環(huán)周期。 解釋:

26、解釋:一旦執(zhí)行了一旦執(zhí)行了continue語(yǔ)句,程序就跳語(yǔ)句,程序就跳過(guò)循環(huán)體中位于過(guò)循環(huán)體中位于continue語(yǔ)句后的所有語(yǔ)語(yǔ)句后的所有語(yǔ) 句,句, 提前結(jié)束本次循環(huán)并開(kāi)始下一次循提前結(jié)束本次循環(huán)并開(kāi)始下一次循 環(huán)。環(huán)。二、continue語(yǔ)句語(yǔ)句 例:計(jì)算用戶輸入的所有正整數(shù)的和,忽略負(fù)數(shù),例:計(jì)算用戶輸入的所有正整數(shù)的和,忽略負(fù)數(shù),用戶輸入用戶輸入 0 時(shí)結(jié)束。時(shí)結(jié)束。 #include main() long data, sum = 0; do printf(“Please input : data=”); scanf(%ld, &data); if( data =1.e-6)/fa

27、bs()求絕對(duì)值的函數(shù) sum=sum+t;n=n+2;sign*= -1;t=sign/n; pi=sum*4; printf(pi=%fn,pi);運(yùn)行結(jié)果:pi=3.141594pi=3.141594第幾個(gè)月 小兔子對(duì)數(shù) 中兔子對(duì)數(shù) 老兔子對(duì)數(shù) 總數(shù) 1 1 0 0 1 2 0 1 0 1 3 1 0 1 2 4 1 1 1 3 5 2 1 2 5 6 3 2 3 8 7 5 3 5 13. 斐波納契斐波納契Fibonacci數(shù)列:數(shù)列:1,1,2,3,5,8例例6.7 求斐波納契數(shù)列:求斐波納契數(shù)列:1,1,2,3,5,8 的前的前20個(gè)數(shù)。個(gè)數(shù)。(該數(shù)列特點(diǎn):第(該數(shù)列特點(diǎn):第1、2

28、兩個(gè)數(shù)是兩個(gè)數(shù)是1、1,從第,從第3個(gè)數(shù)個(gè)數(shù) 開(kāi)始,每個(gè)數(shù)都是其前面兩個(gè)數(shù)之和。)開(kāi)始,每個(gè)數(shù)都是其前面兩個(gè)數(shù)之和。)main() int f1=1, f2=1, i; for(i=1;i=10;i+) printf(%6d%6dn,f1,f2); f1=f1+f2; f2=f1+f2; 運(yùn)行結(jié)果: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 例例6.7 求斐波納契數(shù)列:求斐波納契數(shù)列:1,1,2,3,5,8 的前的前40個(gè)數(shù)。個(gè)數(shù)。#includemain() long int f1=1, f2=1,

29、i; for(i=1;i=20;i+) printf(%12ld %12ld,f1,f2); if(fmod(i,2)=0) printf(n); f1=f1+f2; f2=f1+f2; 運(yùn)行結(jié)果: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 2584 4181 6765 例例6.8 判斷判斷m是否為素?cái)?shù)。是否為素?cái)?shù)。#includemain() int m, i ,k; scanf(%d,&m); k=sqrt(m);/m=83,1,2,3,4,5,6,7,8,9; 10,8 for(i=2; ik) printf(%d is a prime

30、 number.n,m); else printf(%d is not a prime number.n,m);方法:用方法:用2 (m)1/2 之間的整數(shù)作為除數(shù)去整除之間的整數(shù)作為除數(shù)去整除m。例例6.9 錯(cuò)誤處理與多次處理錯(cuò)誤處理與多次處理tmpt=0;doif (tmpt=0) printf(請(qǐng)輸入三角形三邊長(zhǎng)a,b,c:n);else printf(請(qǐng)重新輸入三角形三邊長(zhǎng)a,b,c:n);scanf(%f,%f,%f,&a,&b,&c);tmpt=a+b=c|a+c=b|b+c=a&c=A& c=w&c=W&c=Z) c=c-22; printf(%c,c); A BCDEFGV W

31、 X Y Z 22 23 24 25 26China!Glmre!(第三版習(xí)題第三版習(xí)題6.3 ,書(shū)書(shū)P129;第四版習(xí)題;第四版習(xí)題5 ,書(shū)書(shū)P140 )已知:一位數(shù)碼a 和要組成的最大重碼數(shù)tn的位數(shù)n。 求 :各重碼數(shù)的累加和sn。算法:對(duì)給定的a和n,從i=1 n 依次作:求第i個(gè)重碼數(shù)tntn*10+a。 (其中tn的初值應(yīng)是0)求累加和 snsn+tn。main() int sn,a,n,i,tn; long sn,tn; printf(na, n=); scanf(%d%d,&a,&n); for(tn=0,sn=0,i=1;i=n;i+) tn=tn*10+a; sn+=tn;

32、 printf(na+aa+.=%ld,sn);(第三版習(xí)題第三版習(xí)題6.7 ,書(shū)書(shū)P129 ;第四版習(xí)題;第四版習(xí)題9 ,書(shū)書(shū)P141 )已知:正整數(shù) 1n1000 求:其中的“完數(shù)”,即一個(gè)數(shù)的所有因子之和等于該數(shù)本身的數(shù)。算法:對(duì)于n=21000的每一個(gè)數(shù),進(jìn)行: 求出該數(shù)的所有因子并累加于sum(不保 存這些因子)。 (一個(gè)數(shù)n的所有因子的求法:只需用2n/2 的所有數(shù)去除n,能整除的就是其因子。) 當(dāng)能滿足完數(shù)條件時(shí)(sum=n),重新求 出該數(shù)的所有因子并打印。#includemain() int sum,n,i; for(n=2;n=1000;n+) sum=0; for(i=1

33、;i=n/2;i+) if(fmod(n,i)=0) sum+=i;/求出n的因子,計(jì)算其和 if(sum=n) printf(“n%d : ”,n);/打印完數(shù)for(i=1;i=n/2;i+) if(fmod(n,i)=0) printf(“%d ”,i);/重新計(jì)算n的因子,并打印輸出 (第三版習(xí)題第三版習(xí)題6.11 ,書(shū)書(shū)P129P130 ;第四版習(xí)題;第四版習(xí)題13 ,書(shū)書(shū)P141 )已知:正數(shù)a和求a的算術(shù)平方根x的公式。 求 :a的算術(shù)平方根x。算法: 從鍵盤上輸入a,并假設(shè)a的第一個(gè)根 為x=a;誤差標(biāo)志變量dx。 重復(fù)做: 記下上一個(gè)根x0=x; 按公式求下一個(gè)根x;x=(x+a/x)/2; 求兩個(gè)根的誤差絕對(duì)值dx=fabs(x-x0)。 當(dāng)兩次求得的根之差的

溫馨提示

  • 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)論