




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章 控制結(jié)構(gòu)第1頁,共97頁。【本章學(xué)習(xí)要點(diǎn)】1. 學(xué)習(xí)C+語句的基本知識(shí)和三種基本程序結(jié)構(gòu);2. 掌握構(gòu)成選擇結(jié)構(gòu)的if,if-else和switch語句的使用;3. 掌握構(gòu)成循環(huán)結(jié)構(gòu)的for,while和do.while語句的使用;4. 能利用三種基本結(jié)構(gòu)解決實(shí)際問題。第2頁,共97頁。第3章 控制結(jié)構(gòu)3.1 語句概述和程序結(jié)構(gòu)3.2 選擇結(jié)構(gòu)3.3 循環(huán)結(jié)構(gòu)3.4 跳轉(zhuǎn)語句第3頁,共97頁。3.1 語句概述和程序結(jié)構(gòu) C+語言中的語句可分為空語句、說明語句、復(fù)合語句、表達(dá)式語句、函數(shù)調(diào)用語句和程序控制語句。第4頁,共97頁。3.1.1 語句概述 1. 空語句2. 說明語句3. 表達(dá)式
2、語句4. 函數(shù)調(diào)用語句5. 程序控制語句6. 復(fù)合語句第5頁,共97頁。3.1.1 語句概述1. 空語句 只由一個(gè)分號(hào)所構(gòu)成的語句,它不執(zhí)行任何動(dòng)作。 例如:; , 一般該語句是用來指明被轉(zhuǎn)向的控制點(diǎn)或在特殊情況下作為循環(huán)語句的循環(huán)體。第6頁,共97頁。3.1.1 語句概述2. 說明語句 對(duì)數(shù)據(jù)結(jié)構(gòu)定義和描述、對(duì)變量的定義性說明、給變量賦初值的語句。在程序執(zhí)行過程中,不對(duì)數(shù)據(jù)進(jìn)行操作的執(zhí)行,僅向編譯程序提供一些信息。說明語句可放在函數(shù)中允許出現(xiàn)語句的任何位置,也可以放在函數(shù)定義之外。例如:int x,y;/定義整形變量x,yfloat a,b=3.5; /定義浮點(diǎn)型變量a,b,并給b賦初值3.
3、5第7頁,共97頁。3.1.1 語句概述3. 表達(dá)式語句 由表達(dá)式組成的語句,由一個(gè)表達(dá)式接一個(gè)分號(hào)組成。一般是描述算術(shù)運(yùn)算、邏輯運(yùn)算等。例如:a=a+3/表達(dá)式a=a+3;/表達(dá)式語句第8頁,共97頁。3.1.1 語句概述4. 函數(shù)調(diào)用語句 在函數(shù)調(diào)用后加一個(gè)分號(hào)所構(gòu)成的語句,稱為函數(shù)調(diào)用語句。例如:sin(x);第9頁,共97頁。3.1.1 語句概述5. 程序控制語句 完成一定控制功能的語句,用于控制程序中語句的執(zhí)行條件和執(zhí)行順序。例如:if (ab) c=a-b; /若ab,則c=a-belse c=b-a; /否則c=b-a第10頁,共97頁。3.1.1 語句概述6. 復(fù)合語句 由一對(duì)
4、花括號(hào)“ ”括起來的若干語句的組合,在意義上是獨(dú)立的,被視為單獨(dú)一個(gè)語句。 凡是能用單獨(dú)一個(gè)語句的地方,都能換用復(fù)合語句。復(fù)合語句的左、右花括號(hào)標(biāo)明了復(fù)合語句的開始和結(jié)束,在右花括號(hào)的后面不需要再加分號(hào)。第11頁,共97頁。3.1.1 語句概述例如:if(ab)max=a; cout a;/復(fù)合語句elsemax=b; cout b;/復(fù)合語句else max=b; cout b;/復(fù)合語句第12頁,共97頁。3.1.2 程序結(jié)構(gòu) 一個(gè)程序或函數(shù)從它的執(zhí)行行為的角度來分析,都是由三種基本結(jié)構(gòu)組合而成的,即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。第13頁,共97頁。3.1.2 程序結(jié)構(gòu)1.順序結(jié)構(gòu) 按語句
5、的先后順序依次執(zhí)行,這種結(jié)構(gòu)稱為順序結(jié)構(gòu)。 順序結(jié)構(gòu)語句2語句1第14頁,共97頁。3.1.2 程序結(jié)構(gòu)2.選擇結(jié)構(gòu) 根據(jù)某個(gè)條件,選擇執(zhí)行某一個(gè)語句。選擇結(jié)構(gòu)假條件語句2語句1真第15頁,共97頁。3.1.2 程序結(jié)構(gòu)3.循環(huán)結(jié)構(gòu) 根據(jù)某種條件,重復(fù)執(zhí)行某一語句或若干個(gè)語句。循環(huán)結(jié)構(gòu)條件循環(huán)體語句真假第16頁,共97頁。3.2 選擇結(jié)構(gòu) 選擇結(jié)構(gòu)也稱為條件分支結(jié)構(gòu)。其執(zhí)行流程的方式是:根據(jù)給定的條件,選擇執(zhí)行兩個(gè)或兩個(gè)以上分支程序段中的某一個(gè)分支程序段。C+中可由if語句和switch語句來實(shí)現(xiàn)這種選擇結(jié)構(gòu)。第17頁,共97頁。3.2.1 條件語句 if語句表達(dá)式語句是條件語句之一,它實(shí)現(xiàn)的
6、功能是,根據(jù)給定的條件,決定執(zhí)行兩個(gè)分支中的一個(gè)分支。 第18頁,共97頁。3.2.1 條件語句 1. 單選條件語句一般格式 if ()語句執(zhí)行過程: 先求出表達(dá)式的值,若表達(dá)式的值為非0,則執(zhí)行語句,否則跳過語句,直接執(zhí)行if的后續(xù)語句。表達(dá)式語句是(非0)if語句執(zhí)行程假(0)第19頁,共97頁。說明: 是符合C+語法規(guī)則的任一表達(dá)式語句 是C+中任意合法的語句由于單選條件語句只是一個(gè)語句,所以把“語句”稱為條件語句的內(nèi)嵌語句,并把內(nèi)嵌語句的語句結(jié)束符“;”作為單選條件語句的結(jié)束符。第20頁,共97頁。例如:if(x2) y=y+4;y=x*x+5*x;上面兩行程序的執(zhí)行過程: 若x2成立
7、,執(zhí)行y=y+4的操作,接著執(zhí)行第二行語句;否則,不執(zhí)行y=y+4的操作,直接執(zhí)行第二行的語句。第21頁,共97頁。 如果內(nèi)嵌語句有多個(gè)操作語句,用“”將幾個(gè)語句括起來作為一個(gè)復(fù)合語句,例如:if(ab) t=a; a=b; b=t;注意,此時(shí)在“”后不需要加分號(hào),因?yàn)椤啊笔且粋€(gè)完整的復(fù)合語句,不需要另加分號(hào)。第22頁,共97頁?!纠?.1】if語句應(yīng)用舉例#include void main( )int x=1;int y=3,z=0;if (xy)z=y-x;coutzendl;輸出為2分析:表達(dá)式xy成立,執(zhí)行“z=y-x;”語句,使z改變了值。所以,輸出的不是z原來的值0,而是2。第2
8、3頁,共97頁。2. 二選一條件語句一般格式為: if () 語句1 else 語句2執(zhí)行過程 先求出表達(dá)式的值,若表達(dá)式的值為非0,執(zhí)行語句1,否則執(zhí)行語句2。是(非0)if.else語句執(zhí)行流程否(0)表達(dá)式語句2語句1第24頁,共97頁。說明: 是符合C+語法規(guī)則的任一表達(dá)式語句1和語句2 是C+中任意合法的語句。 第25頁,共97頁。【例3.2】某公司計(jì)時(shí)員工的薪金規(guī)定為:月工作時(shí)間在180小時(shí)內(nèi)的,每小時(shí)8元,超過180小時(shí)的作加班計(jì),超出部分為每小時(shí)10元,請(qǐng)編寫程序計(jì)算員工的月工資(設(shè)工作小時(shí)為整數(shù))。分析:若員工的月工作時(shí)間=180小時(shí),則工資=1808+超出180小時(shí)部分10
9、。第26頁,共97頁。程序如下:#include void main( )int hours,pay;couthours;if(hours180)pay=180*8+(hours-180)*10;elsepay=hours*8;cout”該員工本月工作時(shí)間:”hours”小時(shí)”endl;cout”應(yīng)得工資為:”payendl; 第27頁,共97頁?!纠?.3】從鍵盤上輸入三個(gè)整數(shù),輸出三個(gè)數(shù)中的最大數(shù)。程序如下:#includevoid main( )int x,y,z,t;coutxyz;cout”x=”x” “”y=”y” “”z=”z=y) t=x;elset=y;coutz) cout
10、tendl; elsecoutzendl;分析:對(duì)三個(gè)數(shù)作兩次比較,1)比較前兩個(gè)數(shù),把大數(shù)存于中間變量;2)把中間變量和第三個(gè)數(shù)比較,輸出其中的較大數(shù)。第28頁,共97頁?!纠?.4】從鍵盤輸入兩個(gè)整數(shù),判別其中的較小數(shù)是否是較大數(shù)的約數(shù)。程序如下:#include#includevoid main( )int max,min,t;coutmaxmin;分析:從鍵盤輸入的兩數(shù),先判別其大小,再用大數(shù)對(duì)小數(shù)進(jìn)行求余操作,若余數(shù)為0,則說明是約數(shù),否則不是。第29頁,共97頁。if(maxmin)t=max,max=min,min=t;if(max%min!=0)coutmin”不是”max”的
11、約數(shù)。n”;elsecoutmin”是”max”的約數(shù)。n”;第30頁,共97頁。3. 嵌套的條件語句 條件語句中,內(nèi)嵌的語句可以是任一C+的語句,當(dāng)然也可以是條件語句。當(dāng)條件語句的內(nèi)嵌語句是條件語句時(shí),稱為嵌套的條件語句。一般格式為:if ()語句1else if ()語句2else if ()語句3else 語句n第31頁,共97頁。 嵌套的條件語句一般是單選條件語句和二選一條件語句的組合。當(dāng)嵌套條件語句出現(xiàn)如下形式時(shí):if(e1) if(e2)語句1 /內(nèi)嵌的ifelse 語句2理解上會(huì)出現(xiàn)二義性。C+規(guī)定:else總是和它前面最近的一個(gè)未配對(duì)過的if進(jìn)行配對(duì)。按照這種規(guī)定,上面嵌套的條
12、件語句中else是與第二個(gè)if而不是和第一個(gè)if配對(duì)。第32頁,共97頁。 因此使用內(nèi)嵌的if語句應(yīng)包含else部分,這樣if數(shù)目和else數(shù)目相同,內(nèi)層到外層一一對(duì)應(yīng),不致出錯(cuò),或者將只有if而無else分支的條件語句內(nèi)嵌在外層的else子句中,這樣也不會(huì)出錯(cuò)?;蛘呖梢约踊ɡㄌ?hào)來確定配對(duì)關(guān)系。例如,將上述語句寫成下列形式:if(e1) if(e2) 語句1 /內(nèi)嵌的ifelse 語句2這時(shí), 限定了內(nèi)嵌if語句的范圍,因此else與第一個(gè)if配對(duì)。 第33頁,共97頁?!纠?.5】求一元二次方程ax2+bx+c=0的解。其中a,b,c從鍵盤輸入(a不為0)。分析:輸入系數(shù)a,b,c的值后,程
13、序要根據(jù)b2-4ac的值來確定方程根的情況。當(dāng)b2-4ac0,則方程有兩個(gè)不同的實(shí)根。第34頁,共97頁。程序如下: #include #includevoid main( )double a,b,c,d,root1,root2;coutabc;d=b*b-4*a*c;if(d0)cout”該方程無實(shí)根?!? else/當(dāng)d不小于0時(shí)第35頁,共97頁。if(d)/若d不為0 root1=(-b+sqrt(d)/(2*a);root2=(-b-sqrt(d)/(2*a);cout”該方程有兩個(gè)不同的實(shí)根:”;cout”x1=” root1t “x2=”root2;elseroot1= -b/(
14、2*a);cout”該方程有兩個(gè)相等的實(shí)根:x1=x2=”root1;coutendl;第36頁,共97頁。3.2.2條件運(yùn)算符在C+中提供了一個(gè)條件運(yùn)算符“? :”,它是三元運(yùn)算符,一般格式為: ? :執(zhí)行過程:先求出表達(dá)式1的值,若其為非0,則求出表達(dá)式2的值(不求表達(dá)式3的值),把該值作為運(yùn)算的結(jié)果;否則求出表達(dá)式3的值(不求表達(dá)式2的值),把它作為運(yùn)算的結(jié)果。第37頁,共97頁。說明:(1)三個(gè)可以是符合C+語法規(guī)則的任意表達(dá)式。(2) 是優(yōu)先級(jí)較低的運(yùn)算符,它僅高于賦值運(yùn)算符、復(fù)合賦值運(yùn)算符和逗號(hào)運(yùn)算符。(3)在某些應(yīng)用場(chǎng)合,它也可以實(shí)現(xiàn)選擇語句的功能。第38頁,共97頁。例如:求兩
15、個(gè)數(shù)中的較小數(shù) min=x=y ? x:y;它等同于條件語句:if (x=y) min=x;else min=y; 第39頁,共97頁。 條件運(yùn)算符的結(jié)合性是從右向左,它的運(yùn)算結(jié)果是一個(gè)數(shù)值,可以繼續(xù)參加運(yùn)算,也可用于表達(dá)式求值的任何地方。例如:if(xy ?x: zy? z:y) a=b;cout xy? x:y;第40頁,共97頁。 條件運(yùn)算符可以嵌套使用。如求三個(gè)變量x,y,z中的最小值,用條件運(yùn)算符可表示為:min=(t=x=y?x:y)=z?t:z;等同于以下的條件語句:if(x=y) t=x;else t=y; if(t=z) min=t;else min=z;顯然,前面的表示法比
16、后一種要簡(jiǎn)潔。第41頁,共97頁。3.2.3 開關(guān)語句 開關(guān)語句是switch語句,它也稱為多分支選擇語句。它可以根據(jù)給定的條件,從多個(gè)分支中選擇執(zhí)行一個(gè)分支的語句。第42頁,共97頁。一般格式為:switch()case : case : case : default :語句n+1;第43頁,共97頁。執(zhí)行過程:先計(jì)算條件表達(dá)式的值,從上向下依次與case后面的常量表達(dá)式比較,若與某一常量表達(dá)式的值相等,就轉(zhuǎn)去執(zhí)行該case后的語句,一直執(zhí)行到break語句或開關(guān)語句的右花括號(hào)為止。若無相等的值,有default分支,就執(zhí)行該分支后的語句,否則什么也不執(zhí)行。第44頁,共97頁。 說明:可以是
17、任一符合C+語法規(guī)則的表達(dá)式,其值只能是整型或字符型;只能是由常量所組成的表達(dá)式,其值也只能是整型或字符型,任意兩個(gè)case之后不能出現(xiàn)相同值;“語句”是任意C+語句,它可以是一個(gè)語句,也可以是多個(gè)語句;break語句是可選的。第45頁,共97頁。注意: (1)default分支可放在開關(guān)語句的任何位置,但通常作為最后一個(gè)分支。(2)每個(gè)case均作為開關(guān)語句的一個(gè)分支入口,表達(dá)式的值用來確定進(jìn)入開關(guān)語句中的哪一個(gè)入口,并開始執(zhí)行該語句。程序執(zhí)行時(shí)遇到break語句就跳出switch。(3)當(dāng)沒有break語句時(shí),流程在執(zhí)行完一個(gè)case后面的語句后,轉(zhuǎn)向下一個(gè)case后的語句繼續(xù)執(zhí)行。第46
18、頁,共97頁。(4)當(dāng)省略case后面的語句時(shí),可實(shí)現(xiàn)多個(gè)入口執(zhí)行同一個(gè)語句。第47頁,共97頁。例如:int letter, space, other;char c;switch(c)case a:case b:case c:case d: letter+; break;case n:case :case t: space+; break;default: other+; 當(dāng)字符變量c的值為n, 或t時(shí),均執(zhí)行space+當(dāng)字符變量c的值為a,b,c或d時(shí),均執(zhí)行l(wèi)etter+第48頁,共97頁。(5)在運(yùn)用switch時(shí)要注意符合語句的語法規(guī)則。int a,b,c;a=3;b=4;swit
19、ch(c) case 2.5: /常量表達(dá)式的值應(yīng)為字符型或整型,不能為實(shí)型 case a+b: /a+b不是常量表達(dá)式 case 1,2,3: /不能用這種表示方法來實(shí)現(xiàn)多個(gè)入口執(zhí)行同一語句第49頁,共97頁。從開關(guān)語句的執(zhí)行過程可知,任一開關(guān)語句都可以用條件語句來實(shí)現(xiàn),但有些條件語句不可以用開關(guān)語句來實(shí)現(xiàn)。這是由于開關(guān)語句中限定了表達(dá)式的取值類型,而條件語句中的條件表達(dá)式可取任意類型的值。第50頁,共97頁。【例3.6】根據(jù)輸入的百分制成績(jī)給學(xué)生打等第。90分及以上為“excellent” 8089分為“fine” 7079分為“better” 6069分為“passed” 60分以下為“
20、failed”。分析:輸入的成績(jī)是百分制的,若用原始成績(jī)來構(gòu)造switch語句,那就需要幾十個(gè)入口,考慮到分?jǐn)?shù)段與等第對(duì)應(yīng)的情況(基本以10分為區(qū)間),先把成績(jī)?nèi)フ?0,這樣對(duì)應(yīng)的case語句的數(shù)量相對(duì)合理。第51頁,共97頁。程序如下:#includevoid main( )int score;coutscore;cout”n該學(xué)生的等第為:”;第52頁,共97頁。switch(score/10)case10:case 9:cout” excellent!”;break;case 8:cout” fine!”;break;case 7:cout” better!”;break; case
21、6:cout” passed!”;break;default:cout”failed!”;coutendl;第53頁,共97頁?!纠?.7】設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器:能完成兩個(gè)數(shù)的加、減、乘、除運(yùn)算。如輸入1.5*3,則輸出為1.5*3=4.5。程序如下:#include void main( ) float n1,n2,result; char op;coutn1opn2;coutendl;coutn1opn2”=” ;分析:從鍵盤上讀取運(yùn)算數(shù)和運(yùn)算符,根據(jù)不同的運(yùn)算符進(jìn)行運(yùn)算并輸出結(jié)果。第54頁,共97頁。 switch(op)case+: result=n1+n2;coutresultend
22、l;break;case -: result=n1-n2;coutresultendl;break;case *: result=n1*n2;coutresultendl;break;case /: result=n1/n2;coutresultendl;break; default: cout”無結(jié)果!(運(yùn)算不能進(jìn)行)” endl; 第55頁,共97頁。3.3 循環(huán)結(jié)構(gòu)在進(jìn)行程序設(shè)計(jì)時(shí),常常會(huì)有一些需要重復(fù)執(zhí)行的操作,可通過循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)這種重復(fù)執(zhí)行的操作。例如,求s=1+2+3+100的和,在程序中不可能列出100個(gè)數(shù)再相加。第56頁,共97頁。要完成這樣的求和操作,可用以下步驟實(shí)現(xiàn):(1
23、)設(shè)置整型變量s為累加器,置0;(2)給整型量i置1;(3)使s=s+i;(4)使i=i+1;(5)若i=100,重復(fù)步驟(3)和(4);(6)輸出s的值。 在以上步驟中,步驟(3)和(4)是重復(fù)執(zhí)行部分,這種重復(fù)執(zhí)行的操作稱為循環(huán)體。 第57頁,共97頁。3.3.1 for語句一般格式為:for(;) 語句其中三個(gè)表達(dá)式可以是C+中的任一符合語法規(guī)則的表達(dá)式;“語句”可以是任意C+的語句,是for的內(nèi)嵌語句,把它稱為循環(huán)體。第58頁,共97頁。執(zhí)行過程:1)先求出表達(dá)式1的值;2)求出表達(dá)式2的值,若表達(dá)式2的值為非0,則轉(zhuǎn)去(3),否則轉(zhuǎn)去(4);3)執(zhí)行語句,然后求表達(dá)式3的值,轉(zhuǎn)去(2
24、);4)結(jié)束循環(huán),執(zhí)行for的下一個(gè)語句。表達(dá)式2循環(huán)體語句是(非0)for語句執(zhí)行流程表達(dá)式1表達(dá)式3否(0)for的下一語句第59頁,共97頁。例如,求s=1+2+3+100的和。s=0;for(i=1;i=100;i+)s=s+i;其中:表達(dá)式1是i=1,即給控制循環(huán)的變量i賦初始值1;表達(dá)式2是i=100,是控制循環(huán)的條件,即當(dāng)i=100時(shí),繼續(xù)求累加和(執(zhí)行循環(huán)體s=s+i);表達(dá)式3是i+,使循環(huán)變量發(fā)生增值,以控制循環(huán)可以結(jié)束。第60頁,共97頁。說明:(1)從for語句的執(zhí)行過程可知,語句執(zhí)行時(shí),先判斷循環(huán)條件,若條件滿足,才執(zhí)行循環(huán)體,所以有可能循環(huán)體一次也不執(zhí)行。(2)fo
25、r語句的三個(gè)表達(dá)式可以是任意表達(dá)式,也可以是逗號(hào)表達(dá)式。例如:for(s=0,i=1; i=100; i+)s=s+i;逗號(hào)表達(dá)式第61頁,共97頁。(3)表達(dá)式之間以分號(hào)間隔;三個(gè)表達(dá)式可以部分省略或全部省略,但分號(hào)不能省略。例如:s=0;i=1;for( ; i=100;i+ )s=s+i; /省略了表達(dá)式1或:s=0;i=1;for( ; i=100;)s=s+i; i+;/省略了表達(dá)式1和表達(dá)式3第62頁,共97頁?;颍簊=0;i=1;for( ; ; i+)s=s+i;/省略了表達(dá)式1和表達(dá)式2這里省略了表達(dá)式2,系統(tǒng)約定,相當(dāng)于其值為1,這樣循環(huán)就會(huì)無終止地進(jìn)行,形成了死循環(huán)。為避
26、免這種情況,要在循環(huán)體的語句里增加終止循環(huán)的語句。第63頁,共97頁。或:s=0;i=1;for( ; ; )/三個(gè)表達(dá)式都省略這時(shí),三個(gè)表達(dá)式都省略了,循環(huán)變量的增值語句放在循環(huán)體內(nèi),同時(shí)在循環(huán)體內(nèi)要有使循環(huán)結(jié)束的條件,否則也會(huì)產(chǎn)生死循環(huán)。第64頁,共97頁。【例3.8】求n!。程序如下:#include void main( )int n,i;long s=1;coutn;分析:求n的階乘與求累加和方法相似,不同之處在于存放累乘的積初值應(yīng)為1,應(yīng)注意積的大小可能超出int的范圍。第65頁,共97頁。for(i=1;i=n;i+) /i從1變化到n,每循環(huán)一次,i增1s=s*i;cout”n
27、”n”!=”s;coutendl;第66頁,共97頁?!纠?.9】驗(yàn)證一個(gè)數(shù)是否為素?cái)?shù)。程序如下:#includevoid main( )int n,m,prime=1;coutn;分析:驗(yàn)證一個(gè)正整數(shù)(n3)是否為素?cái)?shù),只要看在2n/2范圍內(nèi)是否找到一個(gè)整數(shù)m能將n整除,若m存在,則n不是素?cái)?shù),否則n是素?cái)?shù)。第67頁,共97頁。for(m=2;m=n/2;m+)/在2范圍里去找是否有能將n整除的mif (n%m= =0)prime=0; /當(dāng)找到一個(gè)時(shí),將標(biāo)志prime置0if (prime)/根據(jù)prime的值來確認(rèn)n是否為素?cái)?shù)cout”n”n”是素?cái)?shù)!n”;elsecout”n”n”不是
28、素?cái)?shù)!n”;第68頁,共97頁。3.3.2 while語句一般格式為:while () 語句其中:表達(dá)式是C+中的任意的表達(dá)式;語句可以是任意語句,也可以是復(fù)合語句,是while的內(nèi)嵌語句,把它稱為循環(huán)體。第69頁,共97頁。執(zhí)行過程:1)先求出表達(dá)式的值;2)當(dāng)表達(dá)式的值為非0,轉(zhuǎn)去(3),否則轉(zhuǎn)去(4);3)執(zhí)行循環(huán)體語句;4)結(jié)束循環(huán),執(zhí)行while的下一個(gè)語句。表達(dá)式循環(huán)體語句是(非0)while語句執(zhí)行流程否(0)while的下一語句第70頁,共97頁。說明:從語句的執(zhí)行過程可知,先判斷條件再執(zhí)行循環(huán)體,所以有可能循環(huán)體一次也不執(zhí)行。在循環(huán)體內(nèi)或在表達(dá)式內(nèi),必須有改變表達(dá)式值的操作,
29、否則,會(huì)使循環(huán)無終止地進(jìn)行,形成死循環(huán)。 第71頁,共97頁。例如:求s=1+2+3+100的和。s=0;i=1;while(i=100)s=s+i;i+;在此程序段中,給控制循環(huán)的變量i賦初始值放在了循環(huán)體外,表達(dá)式i=100是控制循環(huán)的條件,使循環(huán)變量發(fā)生增值的i+置于循環(huán)體內(nèi)。第72頁,共97頁?!纠?.10】打印Fibonacci數(shù)列。程序如下:#includevoid main( )int n,m=3;long fib,fib1=1,fib2=1;coutn;coutendl; cout” 數(shù)列的前”n”項(xiàng)打印如下:”endl; 分析:Fibonacci數(shù)列是1,1,2,3,5,8,
30、數(shù)列中后一個(gè)數(shù)是前兩個(gè)數(shù)之和,可用迭代的方法進(jìn)行。迭代關(guān)系:第73頁,共97頁。coutfib1tfib2;while(m=n)fib=fib1+fib2;couttfib; m+;fib1=fib2;fib2=fib;coutendl; 第74頁,共97頁。3.3.3 dowhile語句一般格式為:do語句while (); 其中表達(dá)式是C+中的符合語法規(guī)則的表達(dá)式;語句可以是任意C+的語句,是內(nèi)嵌語句,把它稱為循環(huán)體。第75頁,共97頁。執(zhí)行過程:1)執(zhí)行循環(huán)體語句; 2)求表達(dá)式的值;3)若表達(dá)式的值為非0,則轉(zhuǎn)去(1),否則轉(zhuǎn)去(4);4)結(jié)束循環(huán),執(zhí)行dowhile的下一個(gè)語句。表達(dá)
31、式循環(huán)體語句是(非0)do.while語句執(zhí)行流程否(0)do.while的下一語句第76頁,共97頁。說明:從dowhile語句的執(zhí)行過程可知,是先執(zhí)行循環(huán)體再判斷條件,所以不管表達(dá)式的值是否為0,循環(huán)體至少執(zhí)行一次。在循環(huán)體內(nèi)或在表達(dá)式內(nèi),同樣要有改變表達(dá)式值的操作,否則會(huì)使循環(huán)無終止地進(jìn)行。 第77頁,共97頁。例如:求s=1+2+3+100的和。s=0;i=1;dos=s+i;i+;while(i=100);在此程序段中,給控制循環(huán)的變量i賦初始值放在了循環(huán)體外,執(zhí)行循環(huán)時(shí),先執(zhí)行s=s+i; i+;,再計(jì)算i=100,循環(huán)是先執(zhí)行再判斷,與while語句不同。第78頁,共97頁?!纠?/p>
32、3.11】輸入一行字符,以換行符結(jié)束,并依次輸出該行字符。#include void main( )char c;cout”輸入一行字符:”;cin.get(c);分析:從輸入緩沖區(qū)中讀取字符,每讀取一個(gè)就輸出一個(gè),直到讀到的是換行符為止。第79頁,共97頁。docoutc;cin.get(c);while( c!=n );coutendl;執(zhí)行程序時(shí)屏幕顯示:輸入一行字符:若輸入:Hello! How are you?則輸出:Hello! How are you?執(zhí)行程序時(shí),輸入的字符先送到輸入緩沖區(qū),只有按下回車后,系統(tǒng)才開始在輸入緩沖區(qū)依次讀取字符。第80頁,共97頁。3.3.4 三種循
33、環(huán)語句的比較1. 對(duì)于重復(fù)結(jié)構(gòu)的程序段,可用三種循環(huán)語句中的一個(gè)來實(shí)現(xiàn),一般情況下它們可以互相代替。2. for和while語句都是先判斷,再執(zhí)行循環(huán)體,循環(huán)體有可能一次也不執(zhí)行;而dowhile循環(huán)是先執(zhí)行循環(huán)體,后判斷,因此,循環(huán)體至少執(zhí)行一次。3. 用while和dowhile循環(huán)時(shí),循環(huán)變量賦初始值應(yīng)在循環(huán)語句之前完成;而for語句中表達(dá)式1可以用來給循環(huán)變量賦初始值。4. 在while和dowhile循環(huán)中,只在while后指定循環(huán)條件,在循環(huán)體內(nèi)包含需要重復(fù)執(zhí)行的語句,也要有使循環(huán)能趨于結(jié)束的語句。第81頁,共97頁。3.3.5 循環(huán)的嵌套及應(yīng)用 在循環(huán)語句的中,其循環(huán)體語句可以是
34、任意合法的C+語句,當(dāng)然也可以是另一個(gè)循環(huán)語句。一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套,內(nèi)嵌的循環(huán)中還可以嵌套循環(huán)。這種嵌套的循環(huán)也稱多重循環(huán)。在構(gòu)造多重循環(huán)時(shí)應(yīng)注意循環(huán)不能交叉,只能嵌套。在C+中,對(duì)循環(huán)嵌套的層次沒有限制。 第82頁,共97頁。【例3.12】打印九九乘法表分析:乘法表共有九行,用變量i控制行數(shù)(i取19),作為外循環(huán);對(duì)每一行,輸出的列數(shù)也不同,用變量j來控制第i行輸出的列數(shù),j的變化范圍取決于i的值(j取1i),j可作為循環(huán)變量來控制內(nèi)循環(huán),這樣就要構(gòu)造兩重循環(huán)。程序如下:第83頁,共97頁。#include#includevoid main( )int
35、i,j;coutsetw(30)”九九乘法表n”;for(i=1;i=9;i+)for(j=1;j=i;j+)coutj*i”=”j*it;coutendl; /當(dāng)內(nèi)循環(huán)執(zhí)行完畢后,一行結(jié)束,打印換行符 注意:多重循環(huán)在執(zhí)行時(shí),外循環(huán)每執(zhí)行一次,內(nèi)循環(huán)要執(zhí)行完畢。 第84頁,共97頁?!纠?.13】用雙重循環(huán)控制打印下列圖形* * * *分析:這個(gè)圖形4行8列,每行的起始位置稍有變化,可以用setw( )來實(shí)現(xiàn)。第85頁,共97頁。#include#includevoid main( ) int i,j;for(i=1;i=4;i+)coutsetw(10+i)” ”; /用setw()控制每行的打印起始位置for(j=1;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- pvc輕質(zhì)隔墻施工方案
- 的日記300字左右
- 2025年惠州城市職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫及參考答案
- 2025年共青團(tuán)知識(shí)競(jìng)賽試題(附答案)
- 2025年江西司法警官職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫帶答案
- 2025年湖南理工職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫附答案
- 2025年泉州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫新版
- 2025年青島港灣職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫參考答案
- 2024-2025學(xué)年高中化學(xué) 第二單元 化學(xué)與資源開發(fā)利用 2.3 石油、煤和天然氣的綜合利用教學(xué)實(shí)錄1 新人教版選修2
- 7火山噴發(fā)(教學(xué)設(shè)計(jì))-2023-2024學(xué)年科學(xué)六年級(jí)下冊(cè)人教鄂教版
- 2025年安徽衛(wèi)生健康職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫含答案
- 2025山東能源集團(tuán)中級(jí)人才庫選拔高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 環(huán)境違法行立案審批表
- 電梯基本結(jié)構(gòu)
- 壓力容器涂敷工藝規(guī)程指導(dǎo)書
- 概率論與數(shù)理統(tǒng)計(jì) 第八章假設(shè)檢驗(yàn)
- 生物醫(yī)用材料進(jìn)展及安全性評(píng)價(jià)PPT課件
- 教研組工作總結(jié)PPT
- 交通標(biāo)線設(shè)計(jì)圖(與對(duì)應(yīng)cad為一套圖紙)
- 扭王字塊預(yù)制專項(xiàng)施工方案
- 新版技能鑒定教材知識(shí)點(diǎn)整理(高級(jí)煙草專賣管理員)
評(píng)論
0/150
提交評(píng)論