版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、C/C+C/C+程序設(shè)計程序設(shè)計1第 3章 程序控制結(jié)構(gòu)C/C+C/C+程序設(shè)計程序設(shè)計2主主 要要 內(nèi)內(nèi) 容容 實現(xiàn)結(jié)構(gòu)化程序設(shè)計的實現(xiàn)結(jié)構(gòu)化程序設(shè)計的3 3種基本結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)種基本結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),以及實現(xiàn)這構(gòu)和循環(huán)結(jié)構(gòu),以及實現(xiàn)這3 3種結(jié)構(gòu)的相關(guān)語句、種結(jié)構(gòu)的相關(guān)語句、3 3種結(jié)構(gòu)種結(jié)構(gòu)程序的設(shè)計方法及條件運算符的應(yīng)用。程序的設(shè)計方法及條件運算符的應(yīng)用。 程序中語句的執(zhí)行順序稱為程序中語句的執(zhí)行順序稱為“程序結(jié)構(gòu)程序結(jié)構(gòu)”。 計算機程序是由若干條語句組成的語句序列。如果程序中計算機程序是由若干條語句組成的語句序列。如果程序中的語句是按照書寫順序執(zhí)行的,稱
2、為的語句是按照書寫順序執(zhí)行的,稱為“順序結(jié)構(gòu)順序結(jié)構(gòu)”; 如果某些語句是按照當(dāng)時的某個條件來決定是否執(zhí)行,稱如果某些語句是按照當(dāng)時的某個條件來決定是否執(zhí)行,稱為為“選擇結(jié)構(gòu)選擇結(jié)構(gòu)”; 如果某些語句要反復(fù)執(zhí)行多次,稱為如果某些語句要反復(fù)執(zhí)行多次,稱為“循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)”。C/C+C/C+程序設(shè)計程序設(shè)計3【例【例3.13.1】輸入的三條邊】輸入的三條邊a,b,c, a,b,c, 求三角形面積求三角形面積 area= s(s-a)(s-b)(s-c) area= s(s-a)(s-b)(s-c) , ,其中其中 s=(a+b+c)/2 s=(a+b+c)/23.1 順序結(jié)構(gòu)程序設(shè)計圖圖3.2 3
3、.2 順序順序結(jié)構(gòu)程序舉例結(jié)構(gòu)程序舉例計算計算area計算計算s輸入輸入a,b,c開始開始輸出輸出area結(jié)束結(jié)束程序執(zhí)行時按照語句序列的書寫順序程序執(zhí)行時按照語句序列的書寫順序C/C+C/C+程序設(shè)計程序設(shè)計4源程序清單:源程序清單:#include using namespace std;#include void main() float s,a,b,c,area; cinabc; s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); coutarea=areaendl; sabcarea4.65.13.56.607.834539 3.5 4.6
4、 5.1 area=7.834539-C/C+C/C+程序設(shè)計程序設(shè)計53.2 選擇結(jié)構(gòu)程序設(shè)計 選擇結(jié)構(gòu)體現(xiàn)了程序的判斷能力。選擇結(jié)構(gòu)體現(xiàn)了程序的判斷能力。 在執(zhí)行過程中,依據(jù)運行時某些變量的值確定某些在執(zhí)行過程中,依據(jù)運行時某些變量的值確定某些操作是否執(zhí)行,或者確定若干個操作中選擇哪個操作是否執(zhí)行,或者確定若干個操作中選擇哪個操作執(zhí)行,這種程序結(jié)構(gòu)稱為選擇結(jié)構(gòu),又稱為操作執(zhí)行,這種程序結(jié)構(gòu)稱為選擇結(jié)構(gòu),又稱為分支結(jié)構(gòu)。分支結(jié)構(gòu)。選擇結(jié)構(gòu)有選擇結(jié)構(gòu)有3種形式:種形式: 單分支結(jié)構(gòu)、雙分支結(jié)構(gòu),多分支結(jié)構(gòu)單分支結(jié)構(gòu)、雙分支結(jié)構(gòu),多分支結(jié)構(gòu)C/C+C/C+程序設(shè)計程序設(shè)計63.2.1 if語句的
5、3種形式1 1單分支選擇結(jié)構(gòu)單分支選擇結(jié)構(gòu): : if (表達式表達式) 語句;語句; 功能:功能:計算表達式的值。如果條件為真(非計算表達式的值。如果條件為真(非0)則執(zhí)行)則執(zhí)行“語語句句”,否則不執(zhí)行語句。,否則不執(zhí)行語句。說明:說明:(1)其中,表達式可為任何類型,常用的是關(guān)系表達式或邏)其中,表達式可為任何類型,常用的是關(guān)系表達式或邏輯表達式。輯表達式。(2)語句可以是任何可執(zhí)行語句,可以是空語句或復(fù)合語句、)語句可以是任何可執(zhí)行語句,可以是空語句或復(fù)合語句、也可以出現(xiàn)內(nèi)嵌簡單的也可以出現(xiàn)內(nèi)嵌簡單的if 語句。語句。條件條件語句語句NY只有一條語句時只有一條語句時可省略大括號可省略大
6、括號C/C+C/C+程序設(shè)計程序設(shè)計7【例3.2】輸入一個學(xué)生成績,如果及格則輸出“good!”,否則什么也不做。 #include using namespace std;void main() float g; cing; if(g=60) coutgood! =60NY開始開始結(jié)束結(jié)束輸出輸出good!輸入成績輸入成績g60C/C+C/C+程序設(shè)計程序設(shè)計8【例【例3.33.3】將兩個整數(shù)】將兩個整數(shù)a,ba,b中的大數(shù)存入中的大數(shù)存入a a中中, ,小數(shù)小數(shù)存入存入b b中。中。算法分析算法分析: :設(shè)一個中間變量設(shè)一個中間變量temp暫存數(shù)據(jù),其操作步驟為:暫存數(shù)據(jù),其操作步驟為:(
7、1) 將將a 賦給賦給temp, 語句為語句為temp=a;(2) 將將b賦給賦給a, 語句為語句為 a=b;(3) 將將temp賦給賦給b(原來(原來a 的值),語句為的值),語句為 b=temp;C/C+C/C+程序設(shè)計程序設(shè)計9void main() int a,b,temp; cinab; if(ab) temp=a; a=b; b=temp; couta=a,b=bendl; #include using namespace std; 5 9ab59 595tempa=9,b=5-aba,b交換交換NY開始開始結(jié)束結(jié)束給給a,b賦值賦值輸出輸出a,b 9 5-a=9,b=5-C/C+
8、C/C+程序設(shè)計程序設(shè)計102.雙分支選擇結(jié)構(gòu)格式:格式: if (表達式表達式) 語句語句1; else 語句語句2; 說明:說明:語句語句1和語句和語句2可以是一條語句、復(fù)合語句或是內(nèi)嵌可以是一條語句、復(fù)合語句或是內(nèi)嵌if語句等,也語句等,也可以是空語句。可以是空語句。 if-else的配對原則是:的配對原則是:else 總是與同一層最近的尚未配對的總是與同一層最近的尚未配對的if 語語句配對。句配對。條件條件語句語句NY語句語句只有一條語句時只有一條語句時可省略大括號可省略大括號C/C+C/C+程序設(shè)計程序設(shè)計11【例【例3.43.4】 輸入一個英文字符,是字母則輸出輸入一個英文字符,是
9、字母則輸出“YES!”,“YES!”,否則輸出否則輸出“NO“NO!”。 C是字母是字母輸出輸出NO!NY輸出輸出YES!開始開始輸入輸入C的值的值結(jié)束結(jié)束C/C+C/C+程序設(shè)計程序設(shè)計12程序清單程序清單: : #include using namespace std; void main() char c; cinc; if(c=a&c=A&c=Z) coutYES!endl; else coutNO!endl; cYES!sNO!88S -C是字母是字母Y開始開始輸入輸入C的值的值結(jié)束結(jié)束輸出輸出YES!N輸出輸出NO!C是字母是字母開始開始輸入輸入C的值的值結(jié)束結(jié)束C/C+C/C+程
10、序設(shè)計程序設(shè)計13程序流程多于兩個分支稱為多分支程序流程多于兩個分支稱為多分支多分支程序結(jié)構(gòu)使用嵌套的多分支程序結(jié)構(gòu)使用嵌套的if-else語句實現(xiàn)。語句實現(xiàn)。if( ) if ( ) 語句語句1 else 語句語句2 else if () 語句語句3 else 語句語句4只有一條語句時只有一條語句時可省略大括號可省略大括號C/C+C/C+程序設(shè)計程序設(shè)計14只在只在else分支嵌套分支嵌套if( ) else if () 語句語句3 else 語句語句4/省略括號表示方式省略括號表示方式if(表達式表達式) 語句語句1; else if(表達式表達式) 語句語句 2; else if(表達式
11、表達式)語句語句3; . else 語句語句n;C/C+C/C+程序設(shè)計程序設(shè)計15【例【例3.5】 求如下所示分段函數(shù)的求如下所示分段函數(shù)的y值。值。 -1 x0 x=0NYy=0輸入輸入x結(jié)束結(jié)束x0NYy=1y=-1開始開始輸出輸出y條件條件x0,else分支嵌套分支嵌套C/C+C/C+程序設(shè)計程序設(shè)計16程序清單程序清單: :#include using namespace std; void main() int x,y; cinx; if(x0) y=-1; else / else子句是與上面的子句是與上面的if(x0)配對)配對 if(x=0) y=0; else y=1; /
12、else子句是與最近的子句是與最近的if(x=0)配對配對 coutx=x,y=y=0NYy=1y=-1開始開始輸出輸出yif(x=0)分支嵌套分支嵌套C/C+C/C+程序設(shè)計程序設(shè)計18程序清單:#include using namespace std; void main() int x,y; cinx; if(x=0) if(x=0) y=0; else y=1; else y=-1; coutx=x,y=yendl; -5yx-1x=-5,y=-1-5C/C+C/C+程序設(shè)計程序設(shè)計19 C 語言不限制嵌套層數(shù) s170N輸入輸入s1結(jié)束結(jié)束s160NY開始開始輸出輸出s2s2=As1
13、80s1s1; if (s160) s2=E; else if (s170) s2=D; else if (s180) s2=C; else if (s190) s2=B; else s2=A; couts2b) if(bb) if(bb) if(bb)?a:b; 當(dāng)當(dāng)a=3,b=4時:變量時:變量max取變量取變量b的值,為的值,為4。C/C+C/C+程序設(shè)計程序設(shè)計23說明:說明:(1)條件運算符的結(jié)合方向)條件運算符的結(jié)合方向“自右向左自右向左” ab?a:cd?c:d 則相當(dāng)于:則相當(dāng)于: ab?a:(cd?c:d)(2)三個表達式類型沒有限制。如:)三個表達式類型沒有限制。如: x?
14、 a: b xy?1:1.5(3)條件表達式可以作函數(shù)參數(shù),如:)條件表達式可以作函數(shù)參數(shù),如: printf(max of %d,%d i%dn,a,b, (ab)?a:b );C/C+C/C+程序設(shè)計程序設(shè)計24【例【例3.63.6】 輸入一個英文字母,判斷是否為英文大寫輸入一個英文字母,判斷是否為英文大寫字母字母, , 若是大寫字母直接輸出,否則轉(zhuǎn)換成大寫字若是大寫字母直接輸出,否則轉(zhuǎn)換成大寫字母輸出。母輸出。 #include using namespace std;void main() char ch; cinch; ch=(ch=A& ch=Z) ? ch:(ch-32); co
15、utchendl;C/C+C/C+程序設(shè)計程序設(shè)計253.2.3 switch3.2.3 switch語句實現(xiàn)多分支選擇結(jié)構(gòu)語句實現(xiàn)多分支選擇結(jié)構(gòu)switch(表達式表達式) case 常量表達式常量表達式1 : 語句組語句組1; break; case 常量表達式常量表達式2 : 語句組語句組2; break; case 常量表達式常量表達式3 : 語句組語句組3; break; case 常量表達式常量表達式n : 語句組語句組n; break; default : 語句組語句組n+1;整型、字符型和枚舉型整型、字符型和枚舉型類型如上類型如上語句可多條語句可多條分支分支結(jié)束分支結(jié)束分支n+
16、1個值選一個值選一case,default語句標(biāo)號語句標(biāo)號C/C+C/C+程序設(shè)計程序設(shè)計263.2.3 switch3.2.3 switch語句實現(xiàn)多分支選擇結(jié)構(gòu)語句實現(xiàn)多分支選擇結(jié)構(gòu)表達式語句組1語句組2語句組n語句組n+1.=常量 表達式1=常量 表達式2=常量 表達式n其它在多分支中選擇一個分支操作在多分支中選擇一個分支操作 C/C+C/C+程序設(shè)計程序設(shè)計27【例【例3.73.7】 輸入輸入i,i,根據(jù)根據(jù)i i 的值輸出信息。的值輸出信息。#include using namespace std; void main() int i; cini; switch(i) case 1:
17、 coutI am in case 1.endl; break; case 2: coutI am in case 2.endl; break; case 3: coutI am in case 3.endl; break; default: coutI am in case 4.endl; i22I am in case 2.-C/C+C/C+程序設(shè)計程序設(shè)計28breakbreak是是C C 語言的一種語句,其功能是中斷正在執(zhí)語言的一種語句,其功能是中斷正在執(zhí)行的語句。如果省略了行的語句。如果省略了breakbreak語句,則執(zhí)行完某個語句,則執(zhí)行完某個語句組后,將繼續(xù)執(zhí)行其后邊的語句組。
18、語句組后,將繼續(xù)執(zhí)行其后邊的語句組。void main() int i=2; switch(i) case 1: coutI am in case 1.endl; case 2: coutI am in case 2.endl; case 3: coutI am in case 3.endl; default: coutI am in case 4.endl; i2 I am in case 2.I am in case 3.I am in default.case后的常數(shù)可以是任意的,并不一定要從小到大排列后的常數(shù)可以是任意的,并不一定要從小到大排列-C/C+C/C+程序設(shè)計程序設(shè)計29【例
19、【例3.8】case子句的入口表達式是字符常量的程序子句的入口表達式是字符常量的程序舉例。舉例。void main() char c=x; switch(c) case a: coutI am in case a.endl; break case x: coutI am in case x.endl; break case z: coutI am in case z.endl; break; default: coutI am in case a.s; switch(s/10) case 0: case 1: case 2: case 3: case 4: case 5: coutE.endl
20、; break; case 6: coutD.endl; break; case 7: coutC.endl; break; case 8: coutB.endl; break; case 9: default: coutA.endl; s 35 35E.-C/C+C/C+程序設(shè)計程序設(shè)計323.3 循環(huán)結(jié)構(gòu)程序設(shè)計3.3.1 3.3.1 當(dāng)型循環(huán)程序結(jié)構(gòu)當(dāng)型循環(huán)程序結(jié)構(gòu) while(表達式表達式) 語句;語句; 功能:功能:計算表達式值,其值若為真(非計算表達式值,其值若為真(非0 0)則反復(fù)執(zhí)行語句,直到)則反復(fù)執(zhí)行語句,直到表達式的值為假時為止。表達式的值為假時為止。說明:說明:(1 1
21、)表達式可以是任何類型,常用的是關(guān)系型或邏輯型表達式。)表達式可以是任何類型,常用的是關(guān)系型或邏輯型表達式。(2 2)重復(fù)執(zhí)行的操作稱為)重復(fù)執(zhí)行的操作稱為“循環(huán)體循環(huán)體。(3 3)在循環(huán)體中還可以包含)在循環(huán)體中還可以包含“循環(huán)語句循環(huán)語句”,多重循環(huán)。,多重循環(huán)。 (4) while (4) while循環(huán)執(zhí)行原則是循環(huán)執(zhí)行原則是“先判斷,后執(zhí)行先判斷,后執(zhí)行”。條件條件NY循環(huán)體循環(huán)體只有一條語句時只有一條語句時可省略大括號可省略大括號C/C+C/C+程序設(shè)計程序設(shè)計33構(gòu)成循環(huán)的三要素循環(huán)當(dāng)中應(yīng)當(dāng)有一個變量,循環(huán)當(dāng)中應(yīng)當(dāng)有一個變量,控制循環(huán)條件的變化,控制循環(huán)條件的變化,叫做循環(huán)控制變
22、量叫做循環(huán)控制變量; ;滿足三個基本條件,滿足三個基本條件,即:即: 有一個明確的初值有一個明確的初值 明確的終值明確的終值 明確的步長值明確的步長值(每次變化的大?。看巫兓拇笮。┭h(huán)變量初始化循環(huán)變量初始化循環(huán)控制表達式循環(huán)控制表達式循環(huán)體循環(huán)體(循環(huán)變量變化)(循環(huán)變量變化)C/C+C/C+程序設(shè)計程序設(shè)計34【例3.10】 設(shè)有變量i=0,1,2,3,4,要求輸出i的5個值,每個數(shù)字間隔3個字符位下一行輸出:“We are out of the loop.”。i=0結(jié)束結(jié)束i5NYi+開始開始輸出輸出i和空格和空格輸出輸出We C/C+C/C+程序設(shè)計程序設(shè)計35程序清單:void
23、 main()int i=0; while(i5) couti ; i+; coutendl; coutWe are out of the loop.endl;i0 11 22 33 44 5We are out of the loop.-C/C+C/C+程序設(shè)計程序設(shè)計36注意:例如以下循環(huán)語句的判斷表達式是例如以下循環(huán)語句的判斷表達式是1,這個循環(huán)稱,這個循環(huán)稱為永真循環(huán)。為永真循環(huán)。while(1) 循環(huán)控制變量要不發(fā)生變化,循環(huán)永遠(yuǎn)不會結(jié)束,循環(huán)控制變量要不發(fā)生變化,循環(huán)永遠(yuǎn)不會結(jié)束,這種循環(huán)稱為這種循環(huán)稱為“死循環(huán)死循環(huán)”或或“永真循環(huán)永真循環(huán)” 。C/C+C/C+程序設(shè)計程序設(shè)計3
24、7【例【例3.11】 求求sum= 1+2+3+ +100。 void main() int i=1,sum=0; /累加器的初值為累加器的初值為0 while(i=100) /i為循環(huán)控制變量為循環(huán)控制變量,初值初值1,終值,終值100 sum=sum+i; i+; /i步長值為步長值為1 coutsumendl;i1sum0 12336410050501015050#include using namespace std; -C/C+C/C+程序設(shè)計程序設(shè)計38將上例改成求任意10個實數(shù)的代數(shù)和,則可以將循環(huán)體改為:i=0;while(ix; /每循環(huán)每循環(huán)1次,輸入次,輸入1個個x的值的
25、值 sum=sum+x; i+;C/C+C/C+程序設(shè)計程序設(shè)計393.3.2 直到循環(huán)程序結(jié)構(gòu)do語句;語句;while(表達式表達式);條件條件NY循環(huán)體循環(huán)體功能:功能:先執(zhí)行循環(huán)體,先執(zhí)行循環(huán)體,然后計算表達式值,然后計算表達式值,其值若為真(非其值若為真(非0)則)則繼續(xù)執(zhí)行循環(huán)體,直繼續(xù)執(zhí)行循環(huán)體,直到表達式為假時為止。到表達式為假時為止。C/C+C/C+程序設(shè)計程序設(shè)計40【例【例3.12】用】用do-while循環(huán)語句循環(huán)語句改寫改寫1+2+100void main() int i=1,sum=0; do sum=sum+i; i+; while(i=100); coutsum
26、endl;i=1,sum=0結(jié)束結(jié)束ii; cini; while(i=10) do sum=sum+i; sum=sum+i; i+; i+; while(i=10); coutsumendl; coutsumendl; 1 1 sum=55 sum=55再運行一次再運行一次 再運行一再運行一次次11 11 sum=0 sum=11C/C+C/C+程序設(shè)計程序設(shè)計423.3.3 次數(shù)循環(huán)程序結(jié)構(gòu) 次數(shù)循環(huán)結(jié)構(gòu)如同當(dāng)循環(huán),它的特點是次數(shù)循環(huán)結(jié)構(gòu)如同當(dāng)循環(huán),它的特點是: :設(shè)計循環(huán)時,確定了循環(huán)體執(zhí)行的次數(shù),在執(zhí)行循環(huán)過程中,設(shè)計循環(huán)時,確定了循環(huán)體執(zhí)行的次數(shù),在執(zhí)行循環(huán)過程中,根據(jù)控制變量的變
27、化使得程序完成反復(fù)操作。根據(jù)控制變量的變化使得程序完成反復(fù)操作。 for(for(表達式表達式1 1;表達式;表達式2 2;表達式;表達式3) 3) 語句語句; ; 表達式表達式1:循環(huán)控制變量的初始化循環(huán)控制變量的初始化(只執(zhí)行只執(zhí)行1次次)。表達式表達式2:循環(huán)判斷條件,是循環(huán)的入口,若條件滿足則執(zhí)行循環(huán)判斷條件,是循環(huán)的入口,若條件滿足則執(zhí)行循環(huán)體,否則結(jié)束循環(huán)。循環(huán)體,否則結(jié)束循環(huán)。表達式表達式3:改變循環(huán)控制變量操作改變循環(huán)控制變量操作(循環(huán)控制變量的增量循環(huán)控制變量的增量),執(zhí)行完循環(huán)體后,執(zhí)行該語句,執(zhí)行完循環(huán)體后,執(zhí)行該語句, 循環(huán)體循環(huán)體: 由由“語句語句”部分來描述部分來描
28、述只有一條語句時只有一條語句時可省略大括號可省略大括號C/C+C/C+程序設(shè)計程序設(shè)計43for(for(表達式表達式1 1;表達式;表達式2 2;表達式;表達式3)3) 語句語句; ;求解表達式求解表達式1表達式表達式2NY求解表達式求解表達式3 3語句語句forfor語句的下一條語句語句的下一條語句C/C+C/C+程序設(shè)計程序設(shè)計44【例【例3.14】將】將 1+2+3+100 改用改用for語句書寫。語句書寫。#include using namespace std;void main() int i,sum=0; for( i=1; i=100; i+ ) sum+=i; coutsu
29、m=sum,i=iendl;isum011233 1005050101 sum=5050,i=101-C/C+C/C+程序設(shè)計程序設(shè)計45 for循環(huán)的多種表現(xiàn)形式循環(huán)的多種表現(xiàn)形式: (1) for循環(huán)語句的表達式循環(huán)語句的表達式1 和表達式和表達式3 都可以是逗號表達式。都可以是逗號表達式。例如例如: int i,sum; for( i=1,sum=0;i=100;i+,sum+=i ) (2)表達式表達式3也可以出現(xiàn)在循環(huán)體中。但格式中的也可以出現(xiàn)在循環(huán)體中。但格式中的“;”不能丟。不能丟。 int i,sum; for(i=1,sum=0;i=100;) i+;sum+=i; C/C+
30、C/C+程序設(shè)計程序設(shè)計463.3.4 循環(huán)嵌套與多重循環(huán)程序結(jié)構(gòu)循環(huán)嵌套與多重循環(huán)程序結(jié)構(gòu)在一個循環(huán)的循環(huán)體內(nèi)又包含另一個循環(huán)語句,稱在一個循環(huán)的循環(huán)體內(nèi)又包含另一個循環(huán)語句,稱為循環(huán)嵌套結(jié)構(gòu)。兩層循環(huán)嵌套結(jié)構(gòu)稱為雙層循為循環(huán)嵌套結(jié)構(gòu)。兩層循環(huán)嵌套結(jié)構(gòu)稱為雙層循環(huán)結(jié)構(gòu);兩層以上的嵌套結(jié)構(gòu),則稱為多重循環(huán)環(huán)結(jié)構(gòu);兩層以上的嵌套結(jié)構(gòu),則稱為多重循環(huán)結(jié)構(gòu)。結(jié)構(gòu)。 不合法不合法合法合法C/C+C/C+程序設(shè)計程序設(shè)計47【例3.15】 設(shè)計循環(huán)嵌套結(jié)構(gòu),計算百錢買百雞問題。公雞5元1只, 母雞3元1只,雞雛1元3只,100元錢買100只雞,有多少種買法? 算法分析:算法分析:將所有可能買成功的買法是
31、:將所有可能買成功的買法是:100元錢最多買元錢最多買20只公雞、只公雞、33只母雞,建立以公雞只母雞,建立以公雞為控制變量的外循環(huán),內(nèi)嵌以母雞為循環(huán)控制變?yōu)榭刂谱兞康耐庋h(huán),內(nèi)嵌以母雞為循環(huán)控制變量的循環(huán),雞雛量的循環(huán),雞雛z=100-公雞數(shù)公雞數(shù)-母雞數(shù),如果買母雞數(shù),如果買3種雞用的錢數(shù)等于種雞用的錢數(shù)等于100,則說明購買成功。,則說明購買成功。判斷表達式為:判斷表達式為:x*5+y*3+(100-x-y)/3.0)=100&(z%3=0) C/C+C/C+程序設(shè)計程序設(shè)計48#include using namespace std;void main() int x,y,z; /公雞
32、公雞,母雞母雞,小雞小雞 for(x=1;x=20;x+) /公雞分別是公雞分別是1,2,20只只 for(y=1;y=33;y+) /母雞分別是母雞分別是1,2,33只只 z=100-x-y; /小雞個數(shù)小雞個數(shù) if(x*5+y*3+(100-x-y)/3)=100&z%3=0) coutx=x,y=y,z=zendl; 外循環(huán)括號可省略外循環(huán)括號可省略C/C+C/C+程序設(shè)計程序設(shè)計49void main() int x,y,z; for(x=1;x=20;x+) for(y=1;y=33;y+) z=100-x-y; if(x*5+y*3+(100-x-y)/3.0)=100) cou
33、tx=x,y=y,z=zendl; 1程序運行示意圖:x=4,y=18,z=78x=8,y=11,z=81x=12,y=4,z=84xyz134662134653134644213446結(jié)論:結(jié)論:外循環(huán)一次,內(nèi)循環(huán)外循環(huán)一次,內(nèi)循環(huán)33次次共循環(huán)共循環(huán)20*33次次C/C+C/C+程序設(shè)計程序設(shè)計503.3.5 3種循環(huán)語句的比較(1)for語句簡潔、清晰,它將初始條件、判斷條件和循環(huán)變量語句簡潔、清晰,它將初始條件、判斷條件和循環(huán)變量的在一行書寫,顯得直觀、明了,多用于處理初值、終值和步的在一行書寫,顯得直觀、明了,多用于處理初值、終值和步長值都明確的問題。長值都明確的問題。 While語
34、句多用于處理精確計算、利用終止標(biāo)志控制循環(huán)的問語句多用于處理精確計算、利用終止標(biāo)志控制循環(huán)的問題。題。(2)while 和和do-while語句的循環(huán)控制變量初始化是在循環(huán)語句語句的循環(huán)控制變量初始化是在循環(huán)語句之前完成;之前完成; 而而for語句循環(huán)變量的初始化是在語句循環(huán)變量的初始化是在for語句中的表達式語句中的表達式1中,也中,也可以在可以在for語句前實現(xiàn)。語句前實現(xiàn)。(3)for 語句與語句與while語句執(zhí)行過程相同,先判斷條件后執(zhí)行循語句執(zhí)行過程相同,先判斷條件后執(zhí)行循環(huán)體;環(huán)體;do-while語句執(zhí)行循環(huán)體后判斷循環(huán)條件,無論條件是否滿足都語句執(zhí)行循環(huán)體后判斷循環(huán)條件,無論
35、條件是否滿足都要執(zhí)行一次循環(huán)體。要執(zhí)行一次循環(huán)體。C/C+C/C+程序設(shè)計程序設(shè)計513.4 循環(huán)體內(nèi)使用循環(huán)體內(nèi)使用break語句和語句和continue語句語句 C C 程序的循環(huán)體內(nèi)可以設(shè)定循環(huán)中斷語句提前結(jié)束循環(huán),也程序的循環(huán)體內(nèi)可以設(shè)定循環(huán)中斷語句提前結(jié)束循環(huán),也可以設(shè)定結(jié)束本次循環(huán)體的操作提前進入下次循環(huán)操作可以設(shè)定結(jié)束本次循環(huán)體的操作提前進入下次循環(huán)操作3.4.1 break3.4.1 break語句語句 breakbreak語句用于強制中斷循環(huán)的執(zhí)行,結(jié)束循環(huán)。格式是:語句用于強制中斷循環(huán)的執(zhí)行,結(jié)束循環(huán)。格式是: break; break;功能:強制中斷當(dāng)前的循環(huán),不再執(zhí)行后
36、面的循環(huán)語句而退功能:強制中斷當(dāng)前的循環(huán),不再執(zhí)行后面的循環(huán)語句而退出循環(huán)。出循環(huán)。說明:(說明:(1 1)此語句只能用在)此語句只能用在3 3條循環(huán)語句的循環(huán)體中或條循環(huán)語句的循環(huán)體中或switchswitch語句中,單獨使用此語句無意義。語句中,單獨使用此語句無意義。(2 2)當(dāng))當(dāng)breakbreak語句用于語句用于do-whiledo-while、forfor、whilewhile循環(huán)語句中循環(huán)語句中時時, 通常總是與通??偸桥cifif語句聯(lián)用。語句聯(lián)用。 即滿足即滿足if(if(條件條件) )時便跳出循時便跳出循環(huán)。環(huán)。C/C+C/C+程序設(shè)計程序設(shè)計52【例3.16】 計算半徑r=
37、1到10時的面積并輸出,直到面積大于100為止。 Y break r100 Y N r=1結(jié)束結(jié)束開始開始C/C+C/C+程序設(shè)計程序設(shè)計53程序清單:#include using namespace std;const float PI=3.1415926;void main() int r;float area; for(r=1;r100) break; else coutarea= areaendl; area=3.14rfloat13.141593area=12.57578.53982area=28.27area=78.54area=50.276113.0973C/C+C/C+程序設(shè)計
38、程序設(shè)計54在多層循環(huán)中, break語句只向外跳一層。例如:for (x=1;x=20;x+) /外循環(huán)體用外循環(huán)體用 括起來更清晰括起來更清晰 for(y=1;y=33;y+) /內(nèi)循環(huán)體用內(nèi)循環(huán)體用 括起來更清晰括起來更清晰 z=100-x-y; if(x*5+y*3+(100-x-y)*3.0=100) coutx=x,y=y,z=zendl; break; / breakbreak跳出內(nèi)循環(huán),進入外循環(huán)跳出內(nèi)循環(huán),進入外循環(huán) C/C+C/C+程序設(shè)計程序設(shè)計55【例【例3.17】從鍵盤上輸入若干個字符,以回車換行符作】從鍵盤上輸入若干個字符,以回車換行符作為結(jié)束符號(稱為終止標(biāo)志),
39、統(tǒng)計有效字符個數(shù)。為結(jié)束符號(稱為終止標(biāo)志),統(tǒng)計有效字符個數(shù)。算法分析:算法分析:(1)有效字符指第一個空格出現(xiàn)之前的所有字符。)有效字符指第一個空格出現(xiàn)之前的所有字符。如果沒有輸入空格則以回車換行符為結(jié)束符,如如果沒有輸入空格則以回車換行符為結(jié)束符,如果輸入了空格強制結(jié)束程序。果輸入了空格強制結(jié)束程序。(2)在程序中設(shè)一個計數(shù)器)在程序中設(shè)一個計數(shù)器n用來統(tǒng)計字符出現(xiàn)的用來統(tǒng)計字符出現(xiàn)的個數(shù)。個數(shù)。 C/C+C/C+程序設(shè)計程序設(shè)計56#include using namespace std;void main() int n=0; char c; while(c=getchar()!=n
40、) if(c= ) break; n+; coutnumber of charater= nendl; n0 1c2 3 4number of charater=4Ga bc d-OOD-C/C+C/C+程序設(shè)計程序設(shè)計573.4.2 continue 語句功能:continue語句用于中斷本次循環(huán),提前進入語句用于中斷本次循環(huán),提前進入下次循環(huán)。下次循環(huán)。 說明:(1)continue語句只用在語句只用在for、while、do-while等等循環(huán)體中循環(huán)體中, 通常與通常與if條件語句一條件語句一 起使用起使用, 用來加速用來加速循環(huán)執(zhí)行。循環(huán)執(zhí)行。(2)循環(huán)體中單獨使用)循環(huán)體中單獨使用
41、continue 語句無意義。語句無意義。C/C+C/C+程序設(shè)計程序設(shè)計58【例【例3.183.18】 輸出輸出100100到到200200間能被間能被3 3整除的自然數(shù)整除的自然數(shù)100=n=200 n%3!=0 輸出輸出nNYNYcontinue;C/C+C/C+程序設(shè)計程序設(shè)計59#include using namespace std;void main() int n,i=0; for(n=100;n=200;n+) if(n%3!=0) continue; coutn ; i+; if(i%10=0) /逢逢10換行換行 coutendl; 1021051291321351591
42、62165189192195 198n-4376i0100101102-110320133-C/C+C/C+程序設(shè)計程序設(shè)計603.5 goto語句及標(biāo)號語句語句及標(biāo)號語句goto語句為無語句為無“條件轉(zhuǎn)向語句條件轉(zhuǎn)向語句”,它可以出,它可以出現(xiàn)在程序的任何地方,實現(xiàn)程序流程的任意現(xiàn)在程序的任何地方,實現(xiàn)程序流程的任意轉(zhuǎn)移,即跳到某一位置去執(zhí)行該位置的語句。轉(zhuǎn)移,即跳到某一位置去執(zhí)行該位置的語句。C/C+C/C+程序設(shè)計程序設(shè)計61【例3.19】 計算s=1+2+3+4+100, 使用goto 語句實現(xiàn)。#include using namespace std;void main() int i=1,s=0; loop: /此處為標(biāo)號,表示重復(fù)操作的語句入口此處為標(biāo)號,表示重復(fù)操作的語句入口 s+=i; +i; if(i=100) goto loop; /此語句為無條件轉(zhuǎn)移語句此語句為無條件轉(zhuǎn)移語句 couts1e-6。(2)分母)分母n作為循環(huán)控
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 濰坊鋁合金護欄施工方案
- 鋁板外立面維護方案
- 郫縣管網(wǎng)建設(shè)施工方案
- 2025年中國螺桿膨脹機行業(yè)發(fā)展監(jiān)測及投資前景展望報告
- 2025年中國補腎養(yǎng)血丸行業(yè)發(fā)展監(jiān)測及發(fā)展趨勢預(yù)測報告
- 2025年點火器配件項目可行性研究報告
- 牛皮膠原蛋白可行性研究報告申請建議書
- 餐飲空間改造免租期合同
- 排球館裝修工人合同
- 鮮花綠植配送承諾書
- 新能源行業(yè)市場分析報告
- 2025年高考?xì)v史復(fù)習(xí)之小題狂練300題(選擇題):秦漢時期(20題)
- 鉆機安全操作規(guī)程(3篇)
- 2025年產(chǎn)業(yè)園區(qū)運營與管理企業(yè)組織結(jié)構(gòu)及部門職責(zé)
- 巖土工程勘察.課件
- 第五章 無土育苗技術(shù)
- 2022年7月2日江蘇事業(yè)單位統(tǒng)考《綜合知識和能力素質(zhì)》(管理崗)
- 福建省福州三牧中學(xué)2024-2025學(xué)年七年級上學(xué)期期中生物試題(無答案)
- 2024統(tǒng)戰(zhàn)工作總結(jié)
- 銀行營業(yè)網(wǎng)點詐騙、冒領(lǐng)等突發(fā)事件應(yīng)急預(yù)案
- 初一英語語法練習(xí)
評論
0/150
提交評論