




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、5.1 為什么需要循環(huán)控制為什么需要循環(huán)控制5.2 用用while語(yǔ)句實(shí)現(xiàn)循環(huán)語(yǔ)句實(shí)現(xiàn)循環(huán)5.3 用用dowhile語(yǔ)句實(shí)現(xiàn)循環(huán)語(yǔ)句實(shí)現(xiàn)循環(huán)5.4 用用for語(yǔ)句實(shí)現(xiàn)循環(huán)語(yǔ)句實(shí)現(xiàn)循環(huán)5.5 循環(huán)的嵌套循環(huán)的嵌套5.6 幾種循環(huán)的比較幾種循環(huán)的比較5.7 break語(yǔ)句和語(yǔ)句和continue語(yǔ)句語(yǔ)句5.8 程序舉例程序舉例【例【例】 求求1+2+3+4+5。最直觀的方法:最直觀的方法:步驟步驟1:先求:先求1+2,得到結(jié)果,得到結(jié)果3。步驟步驟2:將步驟:將步驟1得到的和得到的和3加上加上3,得到結(jié)果,得到結(jié)果6。步驟步驟3:將:將6再加上再加上4,得,得10。步驟步驟4:將:將10再加上再加
2、上5,得,得15。簡(jiǎn)單算法舉例簡(jiǎn)單算法舉例這樣的算法雖然正確,但太繁,數(shù)目太大時(shí)也不現(xiàn)實(shí),無(wú)這樣的算法雖然正確,但太繁,數(shù)目太大時(shí)也不現(xiàn)實(shí),無(wú)法用程序?qū)崿F(xiàn)。法用程序?qū)崿F(xiàn)?!居^察【觀察】 求求1+2+3+4+5。被加數(shù)被加數(shù)加數(shù)加數(shù)初始值:初始值:1以后:以后:上一次的和上一次的和初始值:初始值:有規(guī)律地遞增,即有規(guī)律地遞增,即+12以后:以后:規(guī)律:規(guī)律:pip=p+i; i+;【例【例】 求求1+2+3+4+5S1: 使使 p=1S2: 使使 i=2S3: 使使 p+i, 和和仍然放在在變量仍然放在在變量p中,中, 即:即: p=p+iS4: 使使 i 的值的值+1,即,即i=i+1或或i+
3、S5: 判斷判斷i5,若成立,返回重新執(zhí)行步驟若成立,返回重新執(zhí)行步驟S3以及其以及其后的后的S4和和S5(循環(huán)操作);(循環(huán)操作); 若不成立,算法結(jié)束。此時(shí)的若不成立,算法結(jié)束。此時(shí)的p值為值為 值。值。改進(jìn)的方法:改進(jìn)的方法:51ii一般形式:一般形式:while(表達(dá)式表達(dá)式) 循環(huán)體語(yǔ)句循環(huán)體語(yǔ)句組組; 執(zhí)行流程:執(zhí)行流程:表達(dá)式表達(dá)式循環(huán)體語(yǔ)句組循環(huán)體語(yǔ)句組假假(0)(0)真真( (非非0)0)#include int main() int i,s; i=1; s=0; while(i=5) s=s+i; i+; printf(result=%d,s);return 0;【例】用【
4、例】用while結(jié)構(gòu)實(shí)現(xiàn)結(jié)構(gòu)實(shí)現(xiàn) 求求1+2+3+4+5/*循環(huán)變量初始化值循環(huán)變量初始化值*/*循環(huán)條件循環(huán)條件*/*循環(huán)體語(yǔ)句組循環(huán)體語(yǔ)句組*/#include int main() int i,p; i=2; p=1; while(i=5) p=p*i; i=i+1; printf(result=%d,p);return 0;【練習(xí)【練習(xí)】仿照上例寫出求仿照上例寫出求125的值的值例例5.1 用用while循環(huán)求循環(huán)求1100的和的和練習(xí)一下練習(xí)一下例例5.1 用用while循環(huán)求循環(huán)求1100的和的和#include int main() int i,sum; printf(sum=%
5、d,i=%dn,sum,i ); return 0;程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果:sum= ,i= sum=0; i= ; while( ) sum+=i; i+; 1i=100sum=5050,i=101思考思考:(1)循環(huán)次數(shù)?)循環(huán)次數(shù)?(2)若)若i=0,會(huì)不會(huì)影響會(huì)不會(huì)影響最后的運(yùn)行結(jié)果?最后的運(yùn)行結(jié)果?100次次不會(huì)不會(huì)求階乘求階乘 n! 求求1n的累加和的累加和求求p=1234n (n10)即:即:s=1+2+3+4+n初始值:初始值:p=1; i=1;s=s+i;i+;p=p*i;i+;初始值:初始值:s=0; i=1;思考思考即:即:s=1+3+5+n求求1n的奇數(shù)累加和的奇數(shù)
6、累加和s=s+i;i=i+2;s=0; i=1;初始值:初始值:思考思考即:即:s=2+4+6+n求求1n的偶數(shù)累加和的偶數(shù)累加和s=s+i;i=i+2;s=0; i=2;初始值:初始值:思考思考求求1n的階乘的和的階乘的和即:即:s=1!+2!+n!(1)做法)做法1:s=1!+2!+n! =1!+1!*2+2!*3+ (n-1)!*n初始值:初始值:s=0; i=1;每一項(xiàng)每一項(xiàng)=上一項(xiàng)上一項(xiàng)*i (i=2n)#include void main() int i=1,s=0,p=1; while(i=5) /求求1!+2!+3!+4!+5! printf(sum=%d,i=%dn,sum,
7、i );p=p*i;s=s+p;i+;思考思考求求1n的階乘的和的階乘的和即:即:s=1!+2!+n!(1)做法)做法2:雙重循環(huán)雙重循環(huán)s=1!+2!+n! =1!+1!*2+2!*3+ (n-1)!*n初始值:初始值:s=0; i=1;每一項(xiàng)每一項(xiàng)=上一項(xiàng)上一項(xiàng)*i (i=2n)#include void main() int i=1,s=0, p, j; while(i=5) /求求1!+2!+3!+4!+5! j=1; p=1; while(j=i) /求求i! p=p*j; j+; s=s+p; printf(sum=%d,i=%dn,sum,i );j=1; p=1; while(
8、j=i) p=p*j; j+; #include void main() int i=1,s=0, p, j; while(i=5) /求求1!+2!+3!+4!+5! j=1; p=1; while(j=i) /求求i! p=p*j; j+; s=s+p; i+; printf(sum=%d,i=%dn,sum,i );一般形式:一般形式:do 循環(huán)體語(yǔ)句循環(huán)體語(yǔ)句組組; while (表達(dá)式表達(dá)式); 執(zhí)行流程:執(zhí)行流程:循環(huán)體語(yǔ)句組循環(huán)體語(yǔ)句組;表達(dá)式表達(dá)式假假(0)(0)真真( (非非0)0)有分號(hào)有分號(hào)例例5.2 用用dowhile循環(huán)求循環(huán)求1100的和的和#include voi
9、d main() int i,sum; i=1; sum=0; do sum=sum+i; i+; while(i=100) printf(sum=%d,i=%d,sum,i);程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果:sum= ,i=;sum=5050,i=101例例 用用dowhile循環(huán)求循環(huán)求15的乘積的乘積練習(xí)一下練習(xí)一下【例】用【例】用dowhile結(jié)構(gòu)實(shí)現(xiàn)結(jié)構(gòu)實(shí)現(xiàn) 求求12345/*循環(huán)變量初始化值循環(huán)變量初始化值*/#include void main() int i,p; i=2; p=1; while(i=5) p=p*i; i=i+1; printf(result=%d,p);/whi
10、le結(jié)構(gòu)結(jié)構(gòu)/*循環(huán)條件循環(huán)條件*/*循環(huán)體語(yǔ)句組循環(huán)體語(yǔ)句組*/#include void main() int i,p; i=2; p=1; do p=p*i; i=i+1; while(i=5) printf(result=%d,p); /dowhile結(jié)構(gòu)結(jié)構(gòu);while和和dowhile比較比較#include void main() int i,sum=0; i=1; do sum+=i;i+; while(i=100); printf(%d,sum);#include void main() int i,sum=0; i=1; while(i=100) sum+=i;i+; pr
11、intf(%d,sum);#include void main() int i,sum=0; scanf(%d,&i); do sum+=i;i+; while(i=10); printf(%d,sum);#include void main() int i,sum=0; scanf(%d,&i); while(i=10) sum+=i;i+; printf(%d,sum);繼續(xù)繼續(xù)比較比較轉(zhuǎn)下頁(yè)兩個(gè)程序先后兩次分別輸入兩個(gè)程序先后兩次分別輸入1和和11,查看結(jié)果。,查看結(jié)果。第一次運(yùn)行:1再運(yùn)行一次:11sum=55sum=11第一次運(yùn)行:1再運(yùn)行一次:11sum=55sum
12、=0While結(jié)構(gòu)結(jié)構(gòu)運(yùn)行情況:運(yùn)行情況:dowhile結(jié)構(gòu)結(jié)構(gòu)運(yùn)行情況:運(yùn)行情況:上一頁(yè)結(jié)論:結(jié)論:while 和和dowhile結(jié)構(gòu)何時(shí)相同?結(jié)構(gòu)何時(shí)相同?何時(shí)不同?何時(shí)不同? P119 F循環(huán)變量初始化,循環(huán)變量初始化,如:如:i=1; s=0;F循環(huán)條件,循環(huán)條件,如:如:i=100F循環(huán)趨向結(jié)束語(yǔ)句,循環(huán)趨向結(jié)束語(yǔ)句,如:如:i+;一般形式:一般形式:for(expr1;expr2;expr3) 循環(huán)體語(yǔ)句循環(huán)體語(yǔ)句組組; /end of for假假(0)(0)expr2expr2循環(huán)體語(yǔ)句組循環(huán)體語(yǔ)句組; ;真真( (非非0)0)expr1expr1expr3expr3expr1:
13、在循環(huán)體在循環(huán)體先執(zhí)行先執(zhí)行(作用作用: 循環(huán)變量賦初值循環(huán)變量賦初值, 只執(zhí)行只執(zhí)行1次次)expr2:作為循環(huán)條件表達(dá)式作為循環(huán)條件表達(dá)式expr3:作為整個(gè)循環(huán)過程的最后作為整個(gè)循環(huán)過程的最后一條語(yǔ)句自動(dòng)運(yùn)行。一條語(yǔ)句自動(dòng)運(yùn)行。 (作用作用: 修改循環(huán)變量的值修改循環(huán)變量的值)for(expr1;expr2;expr3) 循環(huán)體語(yǔ)句循環(huán)體語(yǔ)句組組; while( ) 循環(huán)體語(yǔ)句;循環(huán)體語(yǔ)句;for(expr1; expr2; expr3) 循環(huán)體語(yǔ)句;循環(huán)體語(yǔ)句; do 循環(huán)體語(yǔ)句;循環(huán)體語(yǔ)句;while( );expr1;expr2expr3;expr1;expr2expr3;#inc
14、lude void main() int i,sum=0; i=1; while(i=100) sum+=i;i+; printf(%d,sum);已知用已知用while結(jié)構(gòu)結(jié)構(gòu)求求“1100的和的和”請(qǐng)改為請(qǐng)改為for結(jié)構(gòu)實(shí)現(xiàn)結(jié)構(gòu)實(shí)現(xiàn)to student#include void main() int i,s=0; printf(%dn,s);#include void main() int i,s=0; i=1; while(i=100) s+=i;i+; printf(%dn,s);對(duì)比用對(duì)比用while結(jié)構(gòu)和結(jié)構(gòu)和for結(jié)構(gòu)結(jié)構(gòu)求求“1100的和的和”for( ; ; ) i=1 i=
15、100 i+s+=i;#include void main() int i,s=0; printf(%dn,s);#include void main() int i,s=0; i=1; while(i=100) s+=i;i+; printf(%dn,s);對(duì)比用對(duì)比用while結(jié)構(gòu)和結(jié)構(gòu)和for結(jié)構(gòu)結(jié)構(gòu)求求“1100的和的和”for( ; ; ) i=1 i=100i+s+=i;練習(xí):練習(xí):for循環(huán)求表達(dá)式的值循環(huán)求表達(dá)式的值f=1+1/3+1/5+1/9to student練習(xí):練習(xí):for循環(huán)求表達(dá)式的值循環(huán)求表達(dá)式的值f=1+1/3+1/5+1/9#include void mai
16、n() /for循環(huán)循環(huán) int i; float f=0; for( ; ; ) ; printf(%fn,f);i=1 i=9 i=i+2f=f+1.0/i練習(xí):練習(xí):用用for循環(huán)在屏幕上輸出顯示一行星號(hào)。循環(huán)在屏幕上輸出顯示一行星號(hào)。* * * * * * * * * * . *通過調(diào)試判斷:一行屏幕可以輸出多少個(gè)通過調(diào)試判斷:一行屏幕可以輸出多少個(gè)星號(hào)星號(hào)* ?to student關(guān)于關(guān)于for循環(huán)的說明:循環(huán)的說明:P121(1)expr1可以省略,但是其后的分號(hào)不能省略。如:可以省略,但是其后的分號(hào)不能省略。如:for(i=1;i=100;i+) sum+=i;i=1;for(;
17、i=100;i+) sum+=i;等價(jià)于等價(jià)于關(guān)于關(guān)于for循環(huán)的說明:循環(huán)的說明:(2)若若expr2省略,會(huì)導(dǎo)致省略,會(huì)導(dǎo)致死循環(huán)死循環(huán)。如:。如:for(i=1;i+) sum+=i;等價(jià)于等價(jià)于i=1;while(1) sum+=i; i+; 所以,從功能上講:所以,從功能上講:expr2不能省略不能省略(3)expr3可以省略,但是其前的分號(hào)不能省略。如:可以省略,但是其前的分號(hào)不能省略。如:for(i=1;i=100;) sum+=i; i+; 關(guān)于關(guān)于for循環(huán)的說明:循環(huán)的說明:for(i=1;i=100;i+) sum+=i;等價(jià)于等價(jià)于(4) 可以同時(shí)省略可以同時(shí)省略exp
18、r1和和expr3。如:求。如:求1100的和的和i=1;for(;i=100;) sum+=i; i+; 關(guān)于關(guān)于for循環(huán)的說明:循環(huán)的說明:for(i=1;i=100;i+) sum+=i;等價(jià)于等價(jià)于(4) 可以同時(shí)省略可以同時(shí)省略expr1,expr2和和expr3。如:。如:while(1)printf(“%dn”,i);關(guān)于關(guān)于for循環(huán)的說明:循環(huán)的說明:for( ; ; ) printf(“%dn”,i);等價(jià)于等價(jià)于(5) expr1, expr2 , expr3也可以包含其他功能的表達(dá)式。也可以包含其他功能的表達(dá)式。關(guān)于關(guān)于for循環(huán)的說明:循環(huán)的說明:/求求1100的和
19、的和s=0;for(i=1;i=100;i+) s=s+i; /求求1100的和的和for(s=0,i=1;i=100;s=s+i,i+) ;(6) expr1和和 expr3可以是一個(gè)簡(jiǎn)單的表達(dá)式,也可以是可以是一個(gè)簡(jiǎn)單的表達(dá)式,也可以是逗號(hào)表達(dá)式。逗號(hào)表達(dá)式。(7) C99允許在允許在for語(yǔ)句的語(yǔ)句的expr1中定義中定義變量并賦初值變量并賦初值。關(guān)于關(guān)于for循環(huán)的說明:循環(huán)的說明:/求求1100的和的和s=0;for(int i=1;i=100;i+) s=s+i; expr2一般是一般是循環(huán)條件表達(dá)式循環(huán)條件表達(dá)式,也可以包含其他功能的表達(dá)式。,也可以包含其他功能的表達(dá)式。#inc
20、lude void main() char ch; printf(輸入一串字符,回車鍵結(jié)束:輸入一串字符,回車鍵結(jié)束:); ch=getchar(); for(;ch!=n;) printf(%cn,ch); ch=getchar(); 在獲取值的同時(shí)進(jìn)行判斷在獲取值的同時(shí)進(jìn)行判斷for(;(ch=getchar()!=n;) printf(%cn,ch);while的的循環(huán)條件中也可以包含其他表達(dá)式循環(huán)條件中也可以包含其他表達(dá)式#include void main() char ch; printf(輸入一串字符,回車鍵結(jié)束:輸入一串字符,回車鍵結(jié)束:); for(;(ch=getchar(
21、)!=n;) printf(%cn,ch);在獲取值的同時(shí)進(jìn)行判斷while(ch=getchar()!=n)#include /4.6else if結(jié)構(gòu)結(jié)構(gòu)void main() float score; printf(輸入學(xué)生成績(jī):輸入學(xué)生成績(jī): ); scanf(%f,&score);while(score100|score=90) printf(An); else if(score=80) printf(Bn); else if(score=70) printf(Cn); else if(score=60) printf(Dn); else printf(En);#includ
22、e /5.6else if結(jié)構(gòu)結(jié)構(gòu)void main() float score; printf(輸入學(xué)生成績(jī):輸入學(xué)生成績(jī): ); while(scanf(%f,&score), score100|score=90) printf(An); else if(score=80) printf(Bn); else if(score=70) printf(Cn); else if(score=60) printf(Dn); else printf(En);while( ) 循環(huán)體語(yǔ)句;循環(huán)體語(yǔ)句;for(expr1; expr2; expr3) 循環(huán)體語(yǔ)句;循環(huán)體語(yǔ)句; do 循環(huán)體語(yǔ)句;
23、循環(huán)體語(yǔ)句;while( );expr1;expr2expr3;expr1;expr2expr3;三種循環(huán)結(jié)構(gòu)三種循環(huán)結(jié)構(gòu)三要素:三要素:循環(huán)變量初始化;循環(huán)變量初始化;循環(huán)條件;循環(huán)條件;循環(huán)變量修改語(yǔ)句;循環(huán)變量修改語(yǔ)句;程序填空:程序填空:用用for循環(huán)求循環(huán)求“1100的和的和”#include void main() int i,sum; for( ; i=100; i+) sum+=i; printf(%dn,sum);sum=0i=1,for循環(huán)格式的靈活運(yùn)用循環(huán)格式的靈活運(yùn)用#include void main() int i,sum; for( sum=0,i=1; i=10
24、0; ) printf(%dn,sum);程序填空:程序填空:用用for循環(huán)求循環(huán)求“1100的和的和”;屏幕輸出結(jié)果:屏幕輸出結(jié)果:for循環(huán)格式的靈活運(yùn)用循環(huán)格式的靈活運(yùn)用#include void main() int i,sum; for( sum=0,i=1; i=100; ) printf(%dn,sum);i+程序填空:程序填空:用用for循環(huán)求循環(huán)求“1100的和的和”;sum+=i, 屏幕輸出結(jié)果:屏幕輸出結(jié)果:for循環(huán)格式的靈活運(yùn)用循環(huán)格式的靈活運(yùn)用定義:定義:一個(gè)循環(huán)一個(gè)循環(huán)體內(nèi)體內(nèi)又包含另一個(gè)又包含另一個(gè)完整的完整的循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)。一般形式一般形式:while(條
25、件表達(dá)式條件表達(dá)式) 循環(huán)體語(yǔ)句組;循環(huán)體語(yǔ)句組; do 循環(huán)體語(yǔ)句組;循環(huán)體語(yǔ)句組; while(條件表達(dá)式條件表達(dá)式) ;外層外層內(nèi)層內(nèi)層for(expr1;expr2;expr3) 循環(huán)體語(yǔ)句組;循環(huán)體語(yǔ)句組; while (條件表達(dá)式條件表達(dá)式) 循環(huán)體語(yǔ)句組;循環(huán)體語(yǔ)句組; 執(zhí)行過程執(zhí)行過程:執(zhí)行一次外層循環(huán)時(shí):執(zhí)行一次外層循環(huán)時(shí):內(nèi)層循環(huán)要執(zhí)行到條件內(nèi)層循環(huán)要執(zhí)行到條件不滿足不滿足時(shí)時(shí)(內(nèi)層循環(huán)是多個(gè)小循環(huán),外層循環(huán)是一個(gè)大循環(huán)內(nèi)層循環(huán)是多個(gè)小循環(huán),外層循環(huán)是一個(gè)大循環(huán))基本原則:基本原則:1、外層循環(huán)的、外層循環(huán)的“變量初始化變量初始化”在在外層循環(huán)之前外層循環(huán)之前;2、內(nèi)層循環(huán)
26、的、內(nèi)層循環(huán)的“變量初始化變量初始化”在外層循環(huán)之內(nèi)(適當(dāng)位置)在外層循環(huán)之內(nèi)(適當(dāng)位置)內(nèi)層循環(huán)之前內(nèi)層循環(huán)之前;內(nèi)層循環(huán)可以盡量使用內(nèi)層循環(huán)可以盡量使用for結(jié)構(gòu)結(jié)構(gòu)外層:外層:for循環(huán)循環(huán)內(nèi)層:內(nèi)層:while循環(huán)循環(huán)用雙重循環(huán)編程實(shí)現(xiàn):用雙重循環(huán)編程實(shí)現(xiàn):求求110的階乘和。的階乘和。#include void main() int i, j; long s,p; /s存放和值,存放和值,p存放階乘存放階乘 /i外層循環(huán)變量,外層循環(huán)變量,j內(nèi)層循環(huán)變量?jī)?nèi)層循環(huán)變量 for(s=0,i=1; i=10; i+) j=1; p=1; while(j=i) p=p*j; j+; s=s+
27、p ; printf(result=%ld ,s);to student#include void main() int i, j; long s,p; /s存放和值,存放和值,p存放階乘存放階乘 /i外層循環(huán)變量,外層循環(huán)變量,j內(nèi)層循環(huán)變量?jī)?nèi)層循環(huán)變量 for(s=0,i=1; i=10; i+) for(j=1,p=1;j=i;j+) p=p*j; s=s+p ; printf(result=%ld ,s);to student練習(xí):練習(xí):輸出以下內(nèi)容輸出以下內(nèi)容用雙重循環(huán)輸出用雙重循環(huán)輸出10行星號(hào),每行行星號(hào),每行20個(gè)星號(hào)個(gè)星號(hào)*.*to student#include void
28、main() int i,j; /i 外層循環(huán)控制行數(shù);外層循環(huán)控制行數(shù);j內(nèi)層循環(huán)控制個(gè)數(shù)內(nèi)層循環(huán)控制個(gè)數(shù) for( ; ; ) for( ; ; ) printf(*); /外層外層i循環(huán)結(jié)束循環(huán)結(jié)束/該語(yǔ)句的位置該語(yǔ)句的位置i=1 i=10 i+j=1 j=20 j+printf(n);外層循環(huán)外層循環(huán)練習(xí):練習(xí):輸出以下內(nèi)容輸出以下內(nèi)容*to student#include void main() int i,j; /i 外層循環(huán)控制行數(shù);外層循環(huán)控制行數(shù);j內(nèi)層循環(huán)控制個(gè)數(shù)內(nèi)層循環(huán)控制個(gè)數(shù) for( ; ; ) for( ; ; ) printf(*); /外層外層i循環(huán)結(jié)束循環(huán)結(jié)束
29、/該語(yǔ)句的位置該語(yǔ)句的位置i=1 i=5i+j=1 j=ij+printf(n);外層循環(huán)外層循環(huán)練習(xí):練習(xí):百錢買百雞問題。百錢買百雞問題。百錢百雞問題中國(guó)古代數(shù)學(xué)家張丘建在他百錢百雞問題中國(guó)古代數(shù)學(xué)家張丘建在他的的算經(jīng)算經(jīng)中提出了著名的中提出了著名的“百錢買百雞百錢買百雞問題問題”:雞翁一,值錢五,雞母一,值錢:雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問翁、三,雞雛三,值錢一,百錢買百雞,問翁、母、雛各幾何?母、雛各幾何? 假設(shè):假設(shè):雞翁:雞翁:cocks雞母:雞母:hens雞雛:雞雛:chicks 020=100-cocks-hens 033#include voi
30、d main() int cocks,hens,chicks; for(cocks=0;cocks=20;cocks+) for(hens=0;hens=33;hens+) chicks=100-cocks-hens; if(5.0*cocks+3.0*hens+chicks/3.0=100.0) printf(%d %d %dn,cocks,hens,chicks); 進(jìn)入下一個(gè)環(huán)節(jié)的學(xué)習(xí)進(jìn)入下一個(gè)環(huán)節(jié)的學(xué)習(xí)break;continue;5.7 break語(yǔ)句和語(yǔ)句和continue語(yǔ)句語(yǔ)句從循環(huán)體內(nèi)跳出循環(huán)體外,從循環(huán)體內(nèi)跳出循環(huán)體外,循環(huán)。循環(huán)。break語(yǔ)句語(yǔ)句break;通常與通常與
31、if語(yǔ)句搭配使用語(yǔ)句搭配使用;只能用于只能用于循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)和和switch結(jié)構(gòu)。結(jié)構(gòu)。不能用于其他語(yǔ)句中不能用于其他語(yǔ)句中while(循環(huán)條件表達(dá)式循環(huán)條件表達(dá)式) if(表達(dá)式表達(dá)式x) break; break執(zhí)行示意執(zhí)行示意for(表達(dá)式表達(dá)式1;表達(dá)式表達(dá)式2;表達(dá)式表達(dá)式3) if(表達(dá)式表達(dá)式x) break; 提前提前,再判斷,再判斷是否成立。是否成立。continue語(yǔ)句語(yǔ)句continue;通常與通常與if語(yǔ)句搭配使用語(yǔ)句搭配使用;與與break的區(qū)別:的區(qū)別:不是終止不是終止整個(gè)循環(huán)整個(gè)循環(huán)的執(zhí)行,只是的執(zhí)行,只是提前結(jié)提前結(jié)束本次循環(huán)束本次循環(huán);while(循環(huán)條件表
32、達(dá)式循環(huán)條件表達(dá)式) if(表達(dá)式表達(dá)式y(tǒng)) continue; continue執(zhí)行示意執(zhí)行示意for(表達(dá)式表達(dá)式1;表達(dá)式表達(dá)式2;表達(dá)式表達(dá)式3) if(表達(dá)式表達(dá)式y(tǒng)) continue; m%i輸入一個(gè)任意整數(shù)輸入一個(gè)任意整數(shù)m,判斷,判斷m是否素?cái)?shù)是否素?cái)?shù)#include void main() int m,i; printf(輸入一個(gè)任意整數(shù)輸入一個(gè)任意整數(shù):); scanf(%d,&m); if( ) printf(%d is a prime numbern,m); else printf(%d is not a prime numbern,m);for(i=2;im
33、-1 if(m%i=0) break;for循環(huán)結(jié)束有兩種可能:循環(huán)結(jié)束有兩種可能:(1) im-1(2) m%i=0 ( i=m-1 )輸入一個(gè)任意整數(shù)輸入一個(gè)任意整數(shù)m,判斷,判斷m是否素?cái)?shù)是否素?cái)?shù)#include void main() int m,i; printf(輸入一個(gè)任意整數(shù)輸入一個(gè)任意整數(shù):); scanf(%d,&m); if( ) printf(%d is a prime numbern,m); else printf(%d is not a prime numbern,m);for(i=2;isqrt(m)#include break舉例舉例(例例5.6)輸入一
34、個(gè)任意整數(shù)輸入一個(gè)任意整數(shù)m,判斷,判斷m是否素?cái)?shù)是否素?cái)?shù)#include void main() int m,i; printf(輸入一個(gè)任意整數(shù)輸入一個(gè)任意整數(shù):); scanf(%d,&m); if( ) printf(%d is a prime numbern,m); else printf(%d is not a prime numbern,m);for(i=2;isqrt(m)#include break;continue;本節(jié)內(nèi)容:本節(jié)內(nèi)容:break語(yǔ)句和語(yǔ)句和continue語(yǔ)句語(yǔ)句雙重循環(huán)雙重循環(huán)學(xué)習(xí)與循環(huán)有關(guān)的算法學(xué)習(xí)與循環(huán)有關(guān)的算法掌握循環(huán)程序的編寫和應(yīng)用掌握循
35、環(huán)程序的編寫和應(yīng)用5.8 循環(huán)程序舉例循環(huán)程序舉例例例5.7 求求 的近似值:的近似值:#include #include void main() int s; /s代表每項(xiàng)的符號(hào)代表每項(xiàng)的符號(hào) float n,t,pi; /t:每一項(xiàng)的值每一項(xiàng)的值; pi累加累加; n每項(xiàng)分母每項(xiàng)分母 t=1;pi=0;n=1.0;s=1; while(fabs(t)1e-6) pi=pi+t; n=n+2; /求下一項(xiàng)的分母求下一項(xiàng)的分母 s=-s; /求下一項(xiàng)的符號(hào)求下一項(xiàng)的符號(hào) t=s/n; /求下一項(xiàng)求下一項(xiàng)pi=pi*4;printf(pi=%10.6fn,pi); /4=1-1/3+1/5-1/
36、7+直到某一項(xiàng)的絕對(duì)值小于直到某一項(xiàng)的絕對(duì)值小于10-6為止。為止。例例5.8 求求Fibonacci數(shù)列的前數(shù)列的前40個(gè)數(shù)。個(gè)數(shù)。該數(shù)列有如該數(shù)列有如下特點(diǎn):第下特點(diǎn):第1、2兩個(gè)數(shù)為兩個(gè)數(shù)為1、1。從第。從第3個(gè)數(shù)開個(gè)數(shù)開始,該數(shù)是其前面兩個(gè)數(shù)之和。即:始,該數(shù)是其前面兩個(gè)數(shù)之和。即:F1=1 (n=1)F2=1 (n=2)Fn=Fn-1+Fn-2(n=3)古典數(shù)學(xué)問題:古典數(shù)學(xué)問題:有一對(duì)兔子,從出生后第有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月個(gè)月起每個(gè)月都生一對(duì)兔子。小兔子長(zhǎng)到第都生一對(duì)兔子。小兔子長(zhǎng)到第3個(gè)月后每個(gè)月又生一對(duì)兔個(gè)月后每個(gè)月又生一對(duì)兔子。假設(shè)所有兔子都不死,問每個(gè)月兔子總
37、數(shù)為多少對(duì)?子。假設(shè)所有兔子都不死,問每個(gè)月兔子總數(shù)為多少對(duì)?#include void main( ) long int f1,f2,f3; /f1和和f2存放數(shù)列兩項(xiàng)的值存放數(shù)列兩項(xiàng)的值 int i; /i是循環(huán)控制變量是循環(huán)控制變量 f1=1;f2=1; printf(%12ld %12ld,f1,f2); for(i=1;i=40;i+) f3=f1+f2; printf(%12ld,f3); f1=f2; f2=f3; 另解另解#include void main( ) long int f1,f2; /f1和和f2存放數(shù)列兩項(xiàng)的值存放數(shù)列兩項(xiàng)的值 int i; /i是循環(huán)控制變量是
38、循環(huán)控制變量 f1=1;f2=1; for(i=1;i=20;i+) printf(%12ld %12ld,f1,f2); if(i%2=0) printf(n); /每行輸出每行輸出4項(xiàng)項(xiàng) f1=f1+f2; f2=f2+f1; 例例5.9求求100200之間的所有素?cái)?shù)。之間的所有素?cái)?shù)。#include #include void main() int m,k,i,n=0; /n是計(jì)數(shù)器是計(jì)數(shù)器;m和和i分別是外、內(nèi)層循環(huán)控制變量分別是外、內(nèi)層循環(huán)控制變量 for(m=101;m=200;m=m+2) k=sqrt(m); for(i=2;i=k+1) printf(%d ,m); n=n+
39、1; if(n%10=0) printf(n); /換行換行 printf(n); 例例5.10 譯密碼。為使電文保密,往往按一定規(guī)律將其轉(zhuǎn)換譯密碼。為使電文保密,往往按一定規(guī)律將其轉(zhuǎn)換成密碼,收?qǐng)?bào)人再按約定的規(guī)律將其譯回原文。例如,本題成密碼,收?qǐng)?bào)人再按約定的規(guī)律將其譯回原文。例如,本題按以下規(guī)律將電文變成密碼:按以下規(guī)律將電文變成密碼:(1)將字母)將字母A變成字母變成字母E,a變成變成e,即:變成其后的第,即:變成其后的第4個(gè)個(gè)字母;字母;(2)W變成變成A, X變成變成B, Y變成變成C, Z變成變成D;(3)w變成變成a, x變成變成b, y變成變成c, z變成變成d;(4)電文中若
40、出現(xiàn)非字母字符則不變。)電文中若出現(xiàn)非字母字符則不變。假設(shè):假設(shè):c=getchar();if(c=a&c=A&c=w&c=W&c=Z)c=c-22;putchar(c);#include void main( ) char c; while(c=getchar()!=n) /循環(huán)輸入一串字符,回車符結(jié)束循環(huán)輸入一串字符,回車符結(jié)束 if(c=a&c=A&c=w&c=W&c=Z) c=c-22; printf(%c,c); /或或putchar(c); printf(n); #include void main( ) char c; while(c=getchar()!=n) if(c=a&c=A&cZ&cz) c=c-26; printf(%c,c); printf(n); cZ|cz輸入兩個(gè)正整數(shù)輸入兩個(gè)正整數(shù)m和和n,求最大公約數(shù)和最小公倍數(shù),求最大公約數(shù)和最小公倍數(shù)求最大公約數(shù)主要有兩種方法:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電梯贈(zèng)予合同7篇
- 小產(chǎn)權(quán)轉(zhuǎn)讓合同6篇
- 國(guó)際貿(mào)易之間合作合同
- 公司技術(shù)合作合同協(xié)議書
- 2025年中山貨運(yùn)資格證模擬考試題庫(kù)
- 2025年揚(yáng)州貨運(yùn)從業(yè)資格證模擬考試下載安裝
- 室內(nèi)裝修合同二5篇
- 的擔(dān)保借款合同7篇
- 觀看湖北消防119宣傳月節(jié)目心得感悟集合4篇
- 在民主生活會(huì)上的點(diǎn)評(píng)講話模板
- 現(xiàn)代控制理論課件-矩陣復(fù)習(xí)
- 《化工生產(chǎn)技術(shù)》配套教學(xué)課件
- 液壓與氣壓傳動(dòng)技術(shù)全套課件
- 中國(guó)傳媒大學(xué)《紀(jì)錄片創(chuàng)作教程》課件
- 蛋白電泳在腎臟疾病中的實(shí)際臨床應(yīng)用
- T∕CCCMHPIE 1.3-2016 植物提取物 橙皮苷
- 毫火針療法PPT課件
- 三年級(jí)部編版語(yǔ)文下冊(cè)第二單元日積月累
- 前輪轂止口不合格8D報(bào)告
- 蝴蝶蘭溫室工廠化栽培管理技術(shù)
- 銀行對(duì)賬單(共9頁(yè))
評(píng)論
0/150
提交評(píng)論