




版權(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í)行。如:向前跳如:向前跳gotogoto label; label;label:label:語(yǔ)句;語(yǔ)句;向后跳向后跳label:label:語(yǔ)句;語(yǔ)句;gotogoto label; 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ǔ)句寫出:語(yǔ)句寫出:/用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)榧俚淖兞?。真或?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)體 要寫出一個(gè)正確的循環(huán)結(jié)構(gòu),對(duì)控制變量要要寫出一個(gè)正確的循環(huán)結(jié)構(gòu),對(duì)控制變量要做三方面工作:做三方面工作:控制變量賦初值控制變量賦初值;把控制變量寫入正確的循環(huán)條件
10、(測(cè)試表達(dá)式);把控制變量寫入正確的循環(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ǔ)句寫出:句寫出:/用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)體)表達(dá)式1:變量初始化表達(dá)式2:循環(huán)控制條件測(cè)試表達(dá)式3:控制變量更新 前面已經(jīng)說(shuō)明,要正確表達(dá)循環(huán)結(jié)構(gòu)應(yīng)注意三方面的問(wèn)題:控制變量的初始化,循環(huán)條
14、件的設(shè)置和控制變量的更新。 for語(yǔ)句在書寫形式上正好體現(xiàn)了這種緊密的邏輯關(guān)系。不能省略不能省略不能省略不能省略執(zhí)行過(guò)程:執(zhí)行過(guò)程: 求出表達(dá)式求出表達(dá)式1的值,若表達(dá)式的值,若表達(dá)式1是逗號(hào)表達(dá)式,則依次計(jì)算;是逗號(hào)表達(dá)式,則依次計(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)向。例:將上面計(jì)算例:將上面計(jì)算10!的程序用!的程序用 for語(yǔ)句寫出:語(yǔ)句寫出: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(area=%fn,area); printf(now, r=%dn,r); 錯(cuò)誤!錯(cuò)誤!注意:注意:在嵌套循環(huán)中使用break語(yǔ)句,它只影響包含它的最內(nèi)層循環(huán),即程序僅跳出包圍該break的那層循環(huán)。 例:編寫程
25、序,輸出九九乘法表。編寫程序,輸出九九乘法表。 main( ) int i, j; for( i=1; i= 9; i+) for( j=1; ji ) break; printf(“%3d”, i*j ); printf(“n”); 運(yùn)行結(jié)果:1 2 4 3 6 9 4 8 12 165 10 15 20 256 12 18 24 30 367 14 21 28 35 42 498 16 24 32 40 48 56 649 18 27 36 45 54 63 72 81一般形式:一般形式: 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)體中位于該語(yǔ)句后的所有語(yǔ)過(guò)循環(huán)體中位于該語(yǔ)句后的所有語(yǔ) 句,句, 提前結(jié)束本次循環(huán)并開(kāi)始下一次循環(huán)。提前結(jié)束本次循環(huán)并開(kāi)始下一次循環(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)/fabs(
27、)求絕對(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兩個(gè)數(shù)
28、是兩個(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, i;
29、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 9871597 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 prim
30、e 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
31、W X Y Z 22 23 24 25 26China!Glmre!(第三版習(xí)題第三版習(xí)題6.3 ,書書P129;第四版習(xí)題;第四版習(xí)題5 ,書書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 ,書書P129 ;第四版習(xí)題;第四版習(xí)題9 ,書書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=
33、1;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 ,書書P129P130 ;第四版習(xí)題;第四版習(xí)題13 ,書書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)兩次求得的根之差的絕對(duì)值(精度) dx0.00001); printf(“n x=%f,x);要牢記1.勿忘
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 會(huì)務(wù)公司會(huì)議合同范本
- 2025年金華年貨運(yùn)從業(yè)資格證考試題大全
- 公司保險(xiǎn)擔(dān)保合同范本
- 農(nóng)民養(yǎng)車用車合同范本
- 傭金制合同范本
- 公司資產(chǎn)入股合同范本
- 代理簽訂協(xié)議合同范本
- 養(yǎng)殖木船出售合同范本
- 公司部分收購(gòu)合同范本
- 產(chǎn)品獨(dú)家使用合同范本
- 第一講 文化概論
- 小兒急性喉炎-課件
- 醫(yī)院難免壓瘡申報(bào)表
- 七年級(jí)上冊(cè)走進(jìn)Python的世界第一課python導(dǎo)入及海龜編輯器介紹
- 公路工程概論全套課件
- 中小學(xué)教師師德師風(fēng)警示教育培訓(xùn)PPT
- 全文《中國(guó)式現(xiàn)代化》PPT
- 2023年山東司法警官職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試筆試模擬試題及答案解析
- 膽囊結(jié)石疾病護(hù)理質(zhì)量考核標(biāo)準(zhǔn)
- 《荷花》課件(人教版三年級(jí)語(yǔ)文下冊(cè)課件)
- 校園文化建設(shè)方案(共60張PPT)
評(píng)論
0/150
提交評(píng)論