C++程序設(shè)計(jì)第04章-C++的流程控制課件_第1頁
C++程序設(shè)計(jì)第04章-C++的流程控制課件_第2頁
C++程序設(shè)計(jì)第04章-C++的流程控制課件_第3頁
C++程序設(shè)計(jì)第04章-C++的流程控制課件_第4頁
C++程序設(shè)計(jì)第04章-C++的流程控制課件_第5頁
已閱讀5頁,還剩84頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1第 4 章 C+ 的流程控制4.1 算法概述4.2 C+語言程序的結(jié)構(gòu)和語句4.3 選擇結(jié)構(gòu)語句的使用4.4 循環(huán)結(jié)構(gòu)語句的使用句4.5 控制語句的應(yīng)用舉例24.1 算法概述程序 = 數(shù)據(jù) + 算法算法:為解決一個(gè)問題而采取的有限步驟。程序的算法 :使用程序解決問題的計(jì)算步驟 體現(xiàn)為語句不同的算法效率不同: 采用優(yōu)秀的解題方法,合理安排計(jì)算步驟,以最少的計(jì)算步驟完成計(jì)算任務(wù)的方法我們稱為高效率算法。 使用了比較笨拙的解題方法,通過較多的運(yùn)算步驟來實(shí)現(xiàn)同樣的計(jì)算任務(wù)的計(jì)算方法我們稱為低效率算法。 為了有效地進(jìn)行解題,不僅需要保證算法正確,還要考慮算法的質(zhì)量,選擇合適的算法。 34.1.2 算法

2、的設(shè)計(jì)原則 1符合數(shù)學(xué)計(jì)算規(guī)則 只有符合數(shù)學(xué)規(guī)則的計(jì)算步驟才可以被計(jì)算機(jī)正確執(zhí)行。 2保證結(jié)果確定 如果一個(gè)算法對(duì)同一組數(shù)據(jù)進(jìn)行多次計(jì)算,竟然獲得多個(gè)不同的結(jié)果,這種算法是不確定的,是無效的。 保證算法的確定性,最重要的方面是排除程序中隨機(jī)數(shù)的產(chǎn)生(變量初始化)。 3程序能夠正常結(jié)束 一個(gè)合理的算法應(yīng)包含有限的操作步驟,而不能是無限的。 44.1.2 算法的設(shè)計(jì)原則 4合理的輸入 一個(gè)實(shí)際有效的程序中應(yīng)該含有零個(gè)或者多個(gè)輸入(一般會(huì)在程序的算法中加入一個(gè)或者多個(gè)輸入 )。 5合理的輸出 一個(gè)有效的程序在設(shè)計(jì)算法時(shí)必須保證程序至少要有一個(gè)輸出。 54.1.3 算法的表示工具 怎樣來描述一個(gè)算法呢

3、? 自然語言 流程圖 N-S 圖 偽代碼(類似于數(shù)學(xué)語言) 流程圖是目前全球軟件開發(fā)領(lǐng)域使用最廣泛的算法表示工具,它通過一些嚴(yán)格定義圖形的組合來表示算法的步驟以及數(shù)據(jù)變化的走向。用圖形表示算法,直觀形象,易于理解。 自然語言就是人們?nèi)粘I钪惺褂玫恼Z言。容易造成誤解 1973年美國學(xué)者 I.Nassi 和 B.Shneideman提出的一種無流線的流程圖6起止框流程圖表示算法輸入輸出框判斷框流程線處理框連接點(diǎn)注釋框流程圖符號(hào):7例:求 的值。求多項(xiàng)式的累乘積問題。 定義變量: M 累乘積 N 代表一項(xiàng)的分母算法描述:自然語言+ 偽代碼算法: M1,N1 MM NN+1 如果 N100,轉(zhuǎn) 否則

4、,轉(zhuǎn) 輸出 M 的值 結(jié)束1N循環(huán)8開始結(jié)束M1N1MM NN+11N輸出 M 的值N100TrueFalse處理框流程線判斷框 M1 N1 MM NN+1 N100 輸出 M 的值1N用N-S 圖描述用流程圖描述9結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu): 三種。 1.順序結(jié)構(gòu):先執(zhí)行A操作,再 執(zhí)行B操作.AB(a) 流程圖 (b) N-S圖ABA、B可以是一個(gè)簡單語句或一個(gè)基本結(jié)構(gòu)4.1.4 結(jié)構(gòu)化程序設(shè)計(jì)中基本結(jié)構(gòu)的表示 102. 選擇結(jié)構(gòu): C (Condition)代表一個(gè)條件 C True False A B(a) 流程圖 (b) N-S圖 True FalseCAB113. 循環(huán)結(jié)構(gòu): 當(dāng)(w

5、hile)型循環(huán) (1)當(dāng)條件 C 成立時(shí),反復(fù)執(zhí)行 A 操作, 直到 C 為假時(shí),才停止循環(huán)。CAFalseTrue 當(dāng) C為真 A(a) 流程圖 (b) N-S圖有可能循環(huán)體一次都不執(zhí)行 123. 循環(huán)結(jié)構(gòu): 直到(until)型循環(huán)(2)先執(zhí)行 A 操作,再判條件 C, 若為“假”重復(fù)執(zhí)行A,直到 C 為“真”停止ACFalseTrue A 直到 C為真(a) 流程圖 (b) N-S圖循環(huán)體至少要被執(zhí)行一次 13AB三種結(jié)構(gòu)特點(diǎn): 單入口、單出口。 每一部分都可能被執(zhí)行到。 沒有死循環(huán)。 A、B可能是一個(gè)更基本的結(jié)構(gòu)。CAFalseTrueACFalseTrue True FalseCA

6、B144.2 C+語言程序的結(jié)構(gòu)和語句 計(jì)算機(jī)程序運(yùn)行的時(shí)候是將一條條的語句翻譯成機(jī)器指令,控制計(jì)算機(jī)產(chǎn)生計(jì)算的結(jié)果的。所以語句是計(jì)算機(jī)程序的基本組成單位。 注意:在C+程序中,任何執(zhí)行語句都必須寫在函數(shù)中,不允許出現(xiàn)不屬于函數(shù)的獨(dú)立執(zhí)行語句。 1. 定義語句 int a , b ;語句分類:( 6類 ) C+ 程序是由若干函數(shù)構(gòu)成,而一個(gè)函數(shù)由若干語句構(gòu)成。這些語句組合成上述三種結(jié)構(gòu)以實(shí)現(xiàn)算法。152. 控制語句:( 9種,控制語句的執(zhí)行流程 )(1) if ( ) else 條件語句(2) for ( ) 循環(huán)語句(3) while ( ) 循環(huán)語句(4) do while( ) 循環(huán)語句

7、(5) continue 結(jié)束本次 循環(huán)語句(6) break 中止執(zhí)行switch或循環(huán)語句(7) switch 多分支選擇語句(8) go to 轉(zhuǎn)向語句(9) return 從函數(shù)返回語句165. 空語句: ; 只有一個(gè)分號(hào),什么都不做。 主要用于作被轉(zhuǎn)向點(diǎn),或空循環(huán)體。3. 函數(shù)調(diào)用語句: 例: cos(x); 調(diào)用標(biāo)準(zhǔn)庫函數(shù) a=maxx(x1,x2); 調(diào)用自定義函數(shù)4. 表達(dá)式語句:由“表達(dá)式+分號(hào)”構(gòu)成。 例:a+b; a=3+x; i+;17 6.復(fù)合語句: 用 把多條語句括起來構(gòu)成復(fù)合語句, 從語法上看成一條簡單語句。 例: a=1; b=2; c=3; 三個(gè)簡單語句一個(gè)復(fù)

8、合語句或?qū)懗桑?a=1; b=2; c=3; 184.3 選擇結(jié)構(gòu)語句的使用4.3.1 if 語句1. if () 語句2. if () 語句1 else 語句2語句 表達(dá)式假真語句1 表達(dá)式假真語句2 if 語句- 根據(jù)給定條件選擇所執(zhí)行的操作。不平衡 if 語句單選平衡 if 語句二中選一19例4.1 輸入三個(gè)數(shù),求出并輸出其中最大數(shù)兩個(gè)獨(dú)立的不平衡 if 語句動(dòng)態(tài)看程序的執(zhí)行,有些部分可能執(zhí)行到,也可能執(zhí)行不到。#include using namespace std;int main( ) float a,b,c,max; cout a b c; max=a; if(max b) t=

9、b; if(max c) t=c; cout 最大值: max endl; return 0;20max=b maxb假真max=cmax a b c;max=a;cout 最大值: max endl;流程圖如:輸入數(shù)據(jù) 1 2 3 和 1 3 2, 程序每次執(zhí)行的語句不同。21例4.2 輸入三個(gè)數(shù),求出并輸出其中最大數(shù)兩個(gè)獨(dú)立的平衡 if 語句#include using namespace std;int main( ) float a,b,c,max; cout a b c; if(a b) max=b; else max=a; if(maxc) cout 最大值: c endl; el

10、se cout 最大值: max endl; return 0; 223. if () 語句1 else if 語句 else if () 語句2 組合 if 語句 else if () 語句3 else 語句n 語句1 表達(dá)式1假真語句2表達(dá)式2表達(dá)式3語句3 語句4 假假真真對(duì)程序的一次執(zhí)行,只可能執(zhí)行語句1、 語句2、 語句n中的一個(gè)語句23例4.3 輸入三個(gè)數(shù),求出并輸出其中最大數(shù)組合 if 語句的使用,一條語句#include using namespace std;int main( ) float a,b,c; cout a b c; if(a=b & a=c) cout 最大值

11、: a =a & b=c) cout 最大值: b endl; else cout 最大值: c endl; return 0;24例:輸入學(xué)生的分?jǐn)?shù) x,根據(jù)成績的高低, 輸出不同等級(jí)若 x 為 :90100分 則輸出A8089分 則輸出B7079分 則輸出C6069分 則輸出D60分以下 則輸出E#include using namespace std;int main( ) int x; cin x ; if(x=90) cout A =80) cout B =70) cout C =60) cout D n ; else cout E n ; return 0;例如輸入:75執(zhí)行順序輸

12、出結(jié)果注意:條件的寫法25例:輸入學(xué)生的分?jǐn)?shù) x,根據(jù)成績的高低, 輸出不同等級(jí)#include using namespace std;int main( ) int x; cin x ; if(x=90) cout A n ; else if( 80 = x 90 ) cout B n ; else if( 70 = x 80 ) cout C n ; else if( 60 = x 70 ) cout D n ; else cout E n ; return 0;注意:條件的寫法此寫法錯(cuò)誤:若 x = -1則表達(dá)式結(jié)果為真!正確的寫法為:80=x & x= 80(以下類推)26例:輸入學(xué)

13、生的分?jǐn)?shù) x,根據(jù)成績的高低, 輸出不同等級(jí)#include using namespace std;int main( ) int x, d; cin x ; d=x/10; if( d= 9 ) cout A n ; else if( d = 8 ) cout B n ; else if( d = 7 ) cout C n ; else if( d = 6 ) cout D n ; else cout E n ; return 0;注意:條件的寫法正確的寫法為:d = 8(以下類推)此寫法錯(cuò)誤:若 x 90,則不論 x 為何值總是輸出 B。27例:任意輸入一個(gè)小于等于 5 位數(shù)的正整數(shù),

14、輸出其位數(shù)。例:輸入 23 輸出2輸入 13579 輸出5#include using namespace std;int main( ) int x , ws ; cin x ; if(x=10000) ws=5; else if(x=1000) ws=4; else if(x=100) ws=3; else if(x=10) ws=2; else ws=1; cout ws endl ; return 0;注意:條件的寫法28#include using namespace std;int main( ) char c ; cin c ; if(c 32) cout 控制字符n; else

15、 if( 0= c & c=9 ) cout 數(shù)字字符n; else if( A= c & c=Z ) cout 大寫字母n; else if( a= c & c=z ) cout 小寫字母n; else cout 其他字符n; return 0;例 判斷輸入字符的種類。把字符分為五類: 數(shù)字字符 大寫字母 小寫字母、 控制字符(ASCII碼 32) 其他字符294.3.2 if 語句的嵌套形式if ( ) if ( ) 語句1 else 語句2else if ( ) 語句3 else 語句4內(nèi)嵌 if內(nèi)嵌 if內(nèi)嵌的 if-else 語句為一條語句4.3.2 if 語句的嵌套使用if ( )

16、 if ( ) 語句1 else if ( ) 語句2 else 語句3內(nèi)嵌不平衡 if 語句內(nèi)嵌平衡 if 語句if ( ) if ( ) 語句1else if ( ) 語句2 else 語句3 加花括號(hào)31#include using namespace std;int main( ) float x,y; cout x; if(x = 10) if(x10) y = -10; else y = 5; else y = 20; cout y= y endl; return 0;例4.5用嵌套的if語句解決數(shù)學(xué)問題 y=-10(x10)嵌套 if 語句,流程圖見 書32if (a+bc&b+

17、ca&c+ab) s=0.5*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); cout area endl ; else cout b) max=a;else max=b;max=(ab)? a:b;運(yùn)算原則: 當(dāng)表達(dá)式1為真時(shí),整個(gè)表達(dá)式的值為表達(dá)式2 當(dāng)表達(dá)式1為假時(shí),整個(gè)表達(dá)式的值為表達(dá)式3運(yùn)算優(yōu)先級(jí):比賦值運(yùn)算符高 比算術(shù)、關(guān)系、邏輯運(yùn)算符低結(jié)合性:自右向左C+ 語言中唯一的三目運(yùn)算符一般形式:表達(dá)式1 ?表達(dá)式2 :表達(dá)式334int main( ) char ch; cin ch ; ch = (ch=A&ch=Z) ? (ch+32) : ch;

18、cout ch grade ;switch (grade) case A : cout “優(yōu)“endl ; case B : cout “良“endl ; case C : cout “中“endl ; case D : cout “及格“endl ; default: cout “不及格“ grade ;switch (grade) case A : case B: case C: cout 60n; break; case D: case E: cout 60n; grade的值為A、 B或C 時(shí)執(zhí)行同一組語句grade的值為D或E 時(shí)執(zhí)行另外一組語句39注意:1在switch語句中,de

19、fault分支可以放在任何位置。但是為了配合常量表達(dá)式匹配查詢的執(zhí)行流程,使得程序書寫和閱讀方便,一般將default分支寫在switch語句的最后一行。2每個(gè)常量表達(dá)式的值都必須互不相同,否則當(dāng)表達(dá)式的值與多個(gè)常量表達(dá)式的值都匹配時(shí),計(jì)算機(jī)將無法決定到底執(zhí)行哪一個(gè)常量表達(dá)式后面的語句序列。3常量表達(dá)式必須是一個(gè)確定的字符類型或者整數(shù)類型的常量數(shù)值,而不能是浮點(diǎn)數(shù)或者變量表達(dá)式。4switch語句并不與組合的if語句完全等價(jià)。switch語句只能處理字符類型和整數(shù)類型的條件判斷,而組合的if語句不但可以處理字符類型和整數(shù)類型的條件判斷,還可以對(duì)浮點(diǎn)數(shù)等其它的條件進(jìn)行判斷。 40例:i=2;sw

20、itch (i) case 1: i+; case 2: i+; case 3: i+; case 4: i+; default: i+; cout i n;輸出:?輸出:641例4.6 根據(jù)收入,計(jì)算應(yīng)繳納的公積金特點(diǎn):根據(jù)收入,繳納比例不同 in 1000 2%比例1000 = in 2000 3%比例2000 = in 5000 4%比例5000 = in 10000 5%比例10000 = in 6%比例繳納總金額: fee=in*r%in 收入r 繳納比例的分子程序舉例temp = in/1000 ;當(dāng) in 1000 temp=0 r = 2當(dāng) 1000 = in 2000temp

21、=1 r = 3當(dāng) 2000 = in 5000temp=2,3,4 r = 4當(dāng) 5000 = in 10000 temp=5,6,7,8,9 r = 5當(dāng) 10000 = in temp=其它值 r = 642 case 5: case 6: case 7: case 8: case 9: r=5; break; default: r=6; fee = in * r / 100.0; cout公積金為:feeendl; return 0;運(yùn)行過程:輸入: 3500 輸出:公積金為:140#include using namespace std;int main( ) int in,temp

22、,r; float fee; cout in; temp = in/1000; switch(temp) case 0: r=2; break; case 1: r=3; break; case 2: case 3: case 4: r=4; break;43#include using namespace std;int main( ) int in,r;float fee;cin in; /輸入收入if(in1000) r=2;else if( in2000 ) r=3;else if( in5000 ) r=4;else if( in10000 ) r=5;else r=6;fee =

23、in * r / 100.0;cout公積金為:fee num1 op num2; switch (op) case + : result =num1+num2; break; case - : result =num1 - num2; break; case *: result =num1 * num2; break; case / : result =num1 / num2; break; default : 無效運(yùn)算符n ; cout num1 op num2 = result n ; return 0;例 設(shè)計(jì)一個(gè)簡單的計(jì)算器程序, 完成簡單的四則運(yùn)算如:輸入 2.5*4 輸出 2.5

24、*4 =10又如:輸入 2.5+4 輸出 2.5+4 =6.5454.4 循環(huán)結(jié)構(gòu)語句的使用循環(huán) 當(dāng)滿足一定的條件,重復(fù)處理的過程如:解決步驟:(1)整型變量 sum=0, i=0(2)令 i=i+1, sum=sum+i, (3)若 i100, 則重復(fù)步驟(2)(4)輸出 sum步驟(2)稱為循環(huán)體實(shí)現(xiàn)循環(huán)的四種方式 goto + 語句標(biāo)號(hào) while 語句 for 語句 do-while 語句464.4.1 goto 語句和標(biāo)號(hào)goto 標(biāo)號(hào);一般形式: 其作用是確定流程跳轉(zhuǎn)目標(biāo)語句標(biāo)號(hào):用標(biāo)識(shí)符表示,命名規(guī)則與變量名相同。goto 語句主要用途與 if 語句一起構(gòu)成循環(huán)結(jié)構(gòu)從循環(huán)體中跳轉(zhuǎn)

25、到循環(huán)體外 47例4.7 用if語句、 goto語句構(gòu)成循環(huán)的實(shí)例 if、goto語句求和 #include using namespace std;int main( ) int i=1, sum=0 ;loop: if (i=100) sum=sum+i; i+; goto loop; cout sum n ; return 0; i=1sum=0sum=sum+i i+i=100真假48由于在程序中大量使用goto跳轉(zhuǎn)命令會(huì)造成程序結(jié)構(gòu)的混亂,該命令要限制使用49 4.4.2 while( ) 語句 一般形式 while () 當(dāng)表達(dá)式為真 (非0)值時(shí),執(zhí)行 while 語句中的內(nèi)嵌語

26、句。語句 表達(dá)式假真先判斷表達(dá)式后執(zhí)行語句50例4.8 while語句求和實(shí)例#include using namespace std;int main( ) int i=1, sum=0; while (i=100) sum=sum+i; i=i+1; cout sum= sum n ; return 0;循環(huán)體假sum=sum+ii=i+1i=100真i=1sum=0輸出sum51while語句中應(yīng)注意的問題循環(huán)體包含一個(gè)以上的語句時(shí),應(yīng)該用大括號(hào)括起來#include using namespace std;int main( ) int i=1, sum=0; while (i=100

27、) sum=sum+i; i=i+1; cout sum= sum n ; return 0;在循環(huán)體內(nèi)應(yīng)有使循環(huán)趨于結(jié)束的語句 累加計(jì)算中的累加和變量一般初始化為0,累乘計(jì)算中的累乘積變量一般初始化為1。 524.4.3 for語句for (初始化表達(dá)式; 條件表達(dá)式; 修正表達(dá)式) 語句一、一般形式語句 條件表達(dá)式假真修正表達(dá)式初始化表達(dá)式 相當(dāng)于“當(dāng)型”循環(huán)初始化表達(dá)式;while (條件表達(dá)式) 語句; 修正表達(dá)式; ;53二、for語句最簡單的應(yīng)用形式 for ( i=1; i=100; i+ ) sum=sum+i; i=1; while (i=100) sum=sum+i; i+

28、; for (初始化表達(dá)式;條件表達(dá)式;修正表達(dá)式) 語句54例4.9 用for語句求和實(shí)例#include using namespace std;int main( )int sum=0;for(int i=1; i=100; i+) sum += i;cout 從1加到100的總和是: sum endl;return 0;55分號(hào)不能省略i=1;for ( ; i=100; i+) sum=sum+i;分號(hào)不能省略for語句有關(guān)說明2. “初始化表達(dá)式”可省略,初始化移至循環(huán)體前3.“條件表達(dá)式”可省略,做“永真”處理, 循環(huán)無終止地進(jìn)行。真sum=sum+ii+i=1for (i=1;

29、 ; i+) sum=sum+i;1.在C+的for語句的初始化表達(dá)式中,不但可以為變量賦初始值,還可以定義變量。 for(int i=0; i100; i+); 56for語句有關(guān)說明4. “修正表達(dá)式”可省略,“修正”移至循環(huán)體內(nèi)循環(huán)變量在循環(huán)體內(nèi)變化5. “循環(huán)體”可為空,for ( i=1; i=100; sum=sum+i, i+ ) ; 將循環(huán)體中應(yīng)做的工作,放在“修正表達(dá)式”中。for ( i=1; i=100; ) sum=sum+i; i+; 576. 三個(gè)“表達(dá)式”和“語句”都可省略,無限循環(huán)7. “初始化表達(dá)式” 和“修正表達(dá)式”可以是一個(gè)以上的表達(dá)式while (1);

30、for語句有關(guān)說明for ( sum=0, i=1; i=100; i+, j- ) sum=sum+i;for ( i=1; i=100; i+, i+ ) sum=sum+i;for ( ; ; );584.4.4 do-while ( ) 語句do while ()一、一般形式 先執(zhí)行指定的內(nèi)嵌語句,然后判斷表達(dá)式。語句 表達(dá)式假真先執(zhí)行語句然后再判斷表達(dá)式59二、 例4.10 do-while( )語句 求和#include using namespace std;int main( ) int i=1, sum=0; do sum+=i; i+; while ( i=100) ; c

31、out sum= sum n ; return 0;假sum += ii+i i ; while (i=10) sum=sum+i; i+; cout i ; do sum=sum+i; i+; while (i=10); cout sum ; return 0;程序運(yùn)行過程155程序運(yùn)行過程155程序運(yùn)行過程110程序運(yùn)行過程111162例 :輸入一個(gè) 4 位數(shù)的整數(shù),輸出其各位數(shù)字之和。 如:輸入2426 輸出 14解1 (硬性分解各位) #include using namespace std;int main( ) int n, a, b, c, d; cin n; /* n=abcd

32、 a千位,b百位,c十位,d個(gè)位*/ a = n/1000; b = n%1000/100; c = n%100/10; d = n%10; cout a+b+c+d n ; return 0;沒有使用循環(huán),若n是4位以上的數(shù)字,此方法不適用。63解2 (循環(huán) 分解各位) #include using namespace std;void main( ) int n, sum=0; cin n; while( n0) sum += n%10; n = n/10; cout sum n ; return 0;可將 n 推廣為任意位!64例:分解整數(shù):找出100到1000之間的符合下述條件的數(shù),條

33、件為:該數(shù)能被5整除而且該數(shù)各位數(shù)字之和等于9。如:數(shù)225#include using namespace std;int main( ) int i, a, b, c ; for( i=100; i1000; i+=5) a=i/100; b=i%100/10; c=i%10; if(a+b+c=9) cout i n ; return 0;65三種循環(huán)的比較三種循環(huán)可以處理同一問題。while 和 do-while 循環(huán),循環(huán)變量應(yīng)在循環(huán)語句前初始化。while 循環(huán)和 for 循環(huán)是先判斷表達(dá)式后執(zhí)行語句,而 do-while 循環(huán)是先執(zhí)行語句,然后判斷表達(dá)式。對(duì) while、do-w

34、hile 和 for循環(huán),可用 break 語句跳出循環(huán),而用 continue 語句結(jié)束本次循環(huán) while for do-while 664.4.5 break 語句和 continue 語句break;break語句1. break 語句可以使流程跳出 switch 結(jié)構(gòu)2. break 語句可以用來從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語句。for (r=1; r100) break; cout area ; 當(dāng)面積值大于100時(shí),跳出循環(huán)體,不再執(zhí)行其余幾次循環(huán)一般形式:67continue 語句continue;一般形式: 其作用是結(jié)束本次循環(huán),即跳過循環(huán)體下面未

35、執(zhí)行的語句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定。for( n=100; n=200; n+ ) if (n%3=0) continue; cout n n; 當(dāng)n能被3整除時(shí),跳出本次循環(huán),不再執(zhí)行 cout 語句,但是還要繼續(xù)循環(huán)判斷本程序的功能是打印出100200之間不能被3整除的整數(shù)68for (r=1; r100) break; cout area; for( n=100; n=200; n+ ) if (n%3=0) continue; cout n n; 三、break 和 continue 語句的區(qū)別69例:比較兩段程序的區(qū)別for (i=1; i=5; i+) x=i*i; if

36、 (x=9) break; cout x n; cout i= i n;for (i=1; i=5; i+) x=i*i; if (x=9) continue; cout x n; cout i= i n;輸出: 1 4 i=3輸出: 1 4 16 25 i=670例4.11使用循環(huán)語句按照定義求任意兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù)。 #include using namespace std;int main( ) int x, y, i, k; cout x y; k=x=1; i-) /求最大公約數(shù) if(x%i=0 & y%i=0) cout 最大公約數(shù)是: i y?x:y; /取兩數(shù)中的

37、大數(shù) for(i=k; i=x*y; i+) /求最小公倍數(shù) if(i%x=0 & i%y=0) cout 最小公倍數(shù)是: i endl; break; return 0; 724.4.6 循環(huán)的嵌套及其應(yīng)用嵌套:一個(gè)循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán)結(jié)構(gòu)多層循環(huán):內(nèi)嵌的循環(huán)體內(nèi)又嵌套循環(huán)結(jié)構(gòu) 前述的三種循環(huán)都可以互相嵌套三重循環(huán)雙重循環(huán)73#include using namespace std;int main( ) int i,j; cout 乘法表: endl; for(i=1;i=9;i+) /外循環(huán)控制輸出的行數(shù) for(j=1;j=i;j+) /內(nèi)循環(huán) cout i j = i*j t

38、; cout endl; return 0; 例4.12用循環(huán)嵌套技術(shù)輸出99乘法表 74例4.13 求 ax2+bx+c=0 方程的根,#include #include using namespace std;int main( ) float a, b, c, disc, x1, x2, real, image; cout a b c; cout n方程; if (fabs(a)=1e-7) /a=0, 注意寫法 cout 不是二次方程,解為: -c/b endl; else /處理其它三種情況 disc=b*b-4*a*c;75 if (fabs(disc)=1e-7) /disc=0

39、 cout 有兩個(gè)相等的實(shí)數(shù)根: -b/(2*a) 1e-7) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); cout 有兩個(gè)不相等的實(shí)數(shù)根: x1 和 x2 endl; else real=-b/(2*a); image=sqrt(-disc)/(2*a); cout 有兩個(gè)復(fù)數(shù)根: endl; cout real + image i endl; cout real - image i endl; return 0;76例4.14輸入一個(gè)int型整數(shù)num,逆向輸出其各位數(shù)字,同時(shí)求出其位數(shù)以及各位數(shù)字之和。#include using

40、namespace std;int main() int num, sum=0, k, i=0; cinnum; while(num0) k = num%10; cout k ; sum += k; i+; num = num/10; cout n各位數(shù)字之和: sum endl; cout 數(shù)字位數(shù): i endl; return 0; 77例4.15: 循環(huán)求cos(x)#include #include cmathusing namespace std;int main( ) int sign, i; float x,m,n,t,cos; cout x; 78cos=0; t=1; n=

41、1.0; m=1.0; sign=1; i=0;while(fabs(t)=1e-9) cos=cos+t; /累加和i=i+2; /項(xiàng)數(shù) n=n*x*x; /分子的值m=m*i*(i-1); /分母的值 sign = - sign; /符號(hào) t=sign*n/m; /通項(xiàng)的值 cout cos(x)= cos endl; return 0; 注意: 循環(huán)結(jié)束條件。79例4.16 使用循環(huán)語句求解1!+2!+20!多項(xiàng)式求和問題。#include using namespace std;int main( ) double sum,t; sum=0; t=1; for(int i=1; i=2

42、0; i+) t=t*i; /計(jì)算每一個(gè)階乘sum=sum+t; cout sum= sum endl; return 0; 80#include #include using namespace std;int main( ) int f1=1, f2=1; for (int i=1; i=20; i+) cout setw(12) f1 setw(12) f2 ; if( i%2=0 ) cout =k+1輸出:m是素?cái)?shù)輸出:m不是素?cái)?shù)當(dāng)i=k真假返回83#include #include using namespace std;int main( ) int i, m, k; cin m ; k=sqrt(m); for (i=2; i=k+1) cout m is a Prime Number.n ;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論