控制結(jié)構(gòu)課件_第1頁
控制結(jié)構(gòu)課件_第2頁
控制結(jié)構(gòu)課件_第3頁
控制結(jié)構(gòu)課件_第4頁
控制結(jié)構(gòu)課件_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第3章 控制結(jié)構(gòu)第1頁,共97頁?!颈菊聦W習要點】1. 學習C+語句的基本知識和三種基本程序結(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)解決實際問題。第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ù)合語句、表達式語句、函數(shù)調(diào)用語句和程序控制語句。第4頁,共97頁。3.1.1 語句概述 1. 空語句2. 說明語句3. 表達式

2、語句4. 函數(shù)調(diào)用語句5. 程序控制語句6. 復(fù)合語句第5頁,共97頁。3.1.1 語句概述1. 空語句 只由一個分號所構(gòu)成的語句,它不執(zhí)行任何動作。 例如:; , 一般該語句是用來指明被轉(zhuǎn)向的控制點或在特殊情況下作為循環(huán)語句的循環(huán)體。第6頁,共97頁。3.1.1 語句概述2. 說明語句 對數(shù)據(jù)結(jié)構(gòu)定義和描述、對變量的定義性說明、給變量賦初值的語句。在程序執(zhí)行過程中,不對數(shù)據(jù)進行操作的執(zhí)行,僅向編譯程序提供一些信息。說明語句可放在函數(shù)中允許出現(xiàn)語句的任何位置,也可以放在函數(shù)定義之外。例如:int x,y;/定義整形變量x,yfloat a,b=3.5; /定義浮點型變量a,b,并給b賦初值3.

3、5第7頁,共97頁。3.1.1 語句概述3. 表達式語句 由表達式組成的語句,由一個表達式接一個分號組成。一般是描述算術(shù)運算、邏輯運算等。例如:a=a+3/表達式a=a+3;/表達式語句第8頁,共97頁。3.1.1 語句概述4. 函數(shù)調(diào)用語句 在函數(shù)調(dià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ù)合語句 由一對

4、花括號“ ”括起來的若干語句的組合,在意義上是獨立的,被視為單獨一個語句。 凡是能用單獨一個語句的地方,都能換用復(fù)合語句。復(fù)合語句的左、右花括號標明了復(fù)合語句的開始和結(jié)束,在右花括號的后面不需要再加分號。第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) 一個程序或函數(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ù)某個條件,選擇執(zhí)行某一個語句。選擇結(jié)構(gòu)假條件語句2語句1真第15頁,共97頁。3.1.2 程序結(jié)構(gòu)3.循環(huán)結(jié)構(gòu) 根據(jù)某種條件,重復(fù)執(zhí)行某一語句或若干個語句。循環(huán)結(jié)構(gòu)條件循環(huán)體語句真假第16頁,共97頁。3.2 選擇結(jié)構(gòu) 選擇結(jié)構(gòu)也稱為條件分支結(jié)構(gòu)。其執(zhí)行流程的方式是:根據(jù)給定的條件,選擇執(zhí)行兩個或兩個以上分支程序段中的某一個分支程序段。C+中可由if語句和switch語句來實現(xiàn)這種選擇結(jié)構(gòu)。第17頁,共97頁。3.2.1 條件語句 if語句表達式語句是條件語句之一,它實現(xiàn)的

6、功能是,根據(jù)給定的條件,決定執(zhí)行兩個分支中的一個分支。 第18頁,共97頁。3.2.1 條件語句 1. 單選條件語句一般格式 if ()語句執(zhí)行過程: 先求出表達式的值,若表達式的值為非0,則執(zhí)行語句,否則跳過語句,直接執(zhí)行if的后續(xù)語句。表達式語句是(非0)if語句執(zhí)行程假(0)第19頁,共97頁。說明: 是符合C+語法規(guī)則的任一表達式語句 是C+中任意合法的語句由于單選條件語句只是一個語句,所以把“語句”稱為條件語句的內(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)嵌語句有多個操作語句,用“”將幾個語句括起來作為一個復(fù)合語句,例如:if(ab) t=a; a=b; b=t;注意,此時在“”后不需要加分號,因為“”是一個完整的復(fù)合語句,不需要另加分號。第22頁,共97頁?!纠?.1】if語句應(yīng)用舉例#include void main( )int x=1;int y=3,z=0;if (xy)z=y-x;coutzendl;輸出為2分析:表達式xy成立,執(zhí)行“z=y-x;”語句,使z改變了值。所以,輸出的不是z原來的值0,而是2。第2

8、3頁,共97頁。2. 二選一條件語句一般格式為: if () 語句1 else 語句2執(zhí)行過程 先求出表達式的值,若表達式的值為非0,執(zhí)行語句1,否則執(zhí)行語句2。是(非0)if.else語句執(zhí)行流程否(0)表達式語句2語句1第24頁,共97頁。說明: 是符合C+語法規(guī)則的任一表達式語句1和語句2 是C+中任意合法的語句。 第25頁,共97頁?!纠?.2】某公司計時員工的薪金規(guī)定為:月工作時間在180小時內(nèi)的,每小時8元,超過180小時的作加班計,超出部分為每小時10元,請編寫程序計算員工的月工資(設(shè)工作小時為整數(shù))。分析:若員工的月工作時間=180小時,則工資=1808+超出180小時部分10

9、。第26頁,共97頁。程序如下:#include void main( )int hours,pay;couthours;if(hours180)pay=180*8+(hours-180)*10;elsepay=hours*8;cout”該員工本月工作時間:”hours”小時”endl;cout”應(yīng)得工資為:”payendl; 第27頁,共97頁?!纠?.3】從鍵盤上輸入三個整數(shù),輸出三個數(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;分析:對三個數(shù)作兩次比較,1)比較前兩個數(shù),把大數(shù)存于中間變量;2)把中間變量和第三個數(shù)比較,輸出其中的較大數(shù)。第28頁,共97頁?!纠?.4】從鍵盤輸入兩個整數(shù),判別其中的較小數(shù)是否是較大數(shù)的約數(shù)。程序如下:#include#includevoid main( )int max,min,t;coutmaxmin;分析:從鍵盤輸入的兩數(shù),先判別其大小,再用大數(shù)對小數(shù)進行求余操作,若余數(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+的語句,當然也可以是條件語句。當條件語句的內(nèi)嵌語句是條件語句時,稱為嵌套的條件語句。一般格式為:if ()語句1else if ()語句2else if ()語句3else 語句n第31頁,共97頁。 嵌套的條件語句一般是單選條件語句和二選一條件語句的組合。當嵌套條件語句出現(xiàn)如下形式時:if(e1) if(e2)語句1 /內(nèi)嵌的ifelse 語句2理解上會出現(xiàn)二義性。C+規(guī)定:else總是和它前面最近的一個未配對過的if進行配對。按照這種規(guī)定,上面嵌套的條

12、件語句中else是與第二個if而不是和第一個if配對。第32頁,共97頁。 因此使用內(nèi)嵌的if語句應(yīng)包含else部分,這樣if數(shù)目和else數(shù)目相同,內(nèi)層到外層一一對應(yīng),不致出錯,或者將只有if而無else分支的條件語句內(nèi)嵌在外層的else子句中,這樣也不會出錯?;蛘呖梢约踊ɡㄌ杹泶_定配對關(guān)系。例如,將上述語句寫成下列形式:if(e1) if(e2) 語句1 /內(nèi)嵌的ifelse 語句2這時, 限定了內(nèi)嵌if語句的范圍,因此else與第一個if配對。 第33頁,共97頁?!纠?.5】求一元二次方程ax2+bx+c=0的解。其中a,b,c從鍵盤輸入(a不為0)。分析:輸入系數(shù)a,b,c的值后,程

13、序要根據(jù)b2-4ac的值來確定方程根的情況。當b2-4ac0,則方程有兩個不同的實根。第34頁,共97頁。程序如下: #include #includevoid main( )double a,b,c,d,root1,root2;coutabc;d=b*b-4*a*c;if(d0)cout”該方程無實根?!? else/當d不小于0時第35頁,共97頁。if(d)/若d不為0 root1=(-b+sqrt(d)/(2*a);root2=(-b-sqrt(d)/(2*a);cout”該方程有兩個不同的實根:”;cout”x1=” root1t “x2=”root2;elseroot1= -b/(

14、2*a);cout”該方程有兩個相等的實根:x1=x2=”root1;coutendl;第36頁,共97頁。3.2.2條件運算符在C+中提供了一個條件運算符“? :”,它是三元運算符,一般格式為: ? :執(zhí)行過程:先求出表達式1的值,若其為非0,則求出表達式2的值(不求表達式3的值),把該值作為運算的結(jié)果;否則求出表達式3的值(不求表達式2的值),把它作為運算的結(jié)果。第37頁,共97頁。說明:(1)三個可以是符合C+語法規(guī)則的任意表達式。(2) 是優(yōu)先級較低的運算符,它僅高于賦值運算符、復(fù)合賦值運算符和逗號運算符。(3)在某些應(yīng)用場合,它也可以實現(xiàn)選擇語句的功能。第38頁,共97頁。例如:求兩

15、個數(shù)中的較小數(shù) min=x=y ? x:y;它等同于條件語句:if (x=y) min=x;else min=y; 第39頁,共97頁。 條件運算符的結(jié)合性是從右向左,它的運算結(jié)果是一個數(shù)值,可以繼續(xù)參加運算,也可用于表達式求值的任何地方。例如:if(xy ?x: zy? z:y) a=b;cout xy? x:y;第40頁,共97頁。 條件運算符可以嵌套使用。如求三個變量x,y,z中的最小值,用條件運算符可表示為: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、后一種要簡潔。第41頁,共97頁。3.2.3 開關(guān)語句 開關(guān)語句是switch語句,它也稱為多分支選擇語句。它可以根據(jù)給定的條件,從多個分支中選擇執(zhí)行一個分支的語句。第42頁,共97頁。一般格式為:switch()case : case : case : default :語句n+1;第43頁,共97頁。執(zhí)行過程:先計算條件表達式的值,從上向下依次與case后面的常量表達式比較,若與某一常量表達式的值相等,就轉(zhuǎn)去執(zhí)行該case后的語句,一直執(zhí)行到break語句或開關(guān)語句的右花括號為止。若無相等的值,有default分支,就執(zhí)行該分支后的語句,否則什么也不執(zhí)行。第44頁,共97頁。 說明:可以是

17、任一符合C+語法規(guī)則的表達式,其值只能是整型或字符型;只能是由常量所組成的表達式,其值也只能是整型或字符型,任意兩個case之后不能出現(xiàn)相同值;“語句”是任意C+語句,它可以是一個語句,也可以是多個語句;break語句是可選的。第45頁,共97頁。注意: (1)default分支可放在開關(guān)語句的任何位置,但通常作為最后一個分支。(2)每個case均作為開關(guān)語句的一個分支入口,表達式的值用來確定進入開關(guān)語句中的哪一個入口,并開始執(zhí)行該語句。程序執(zhí)行時遇到break語句就跳出switch。(3)當沒有break語句時,流程在執(zhí)行完一個case后面的語句后,轉(zhuǎn)向下一個case后的語句繼續(xù)執(zhí)行。第46

18、頁,共97頁。(4)當省略case后面的語句時,可實現(xiàn)多個入口執(zhí)行同一個語句。第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+; 當字符變量c的值為n, 或t時,均執(zhí)行space+當字符變量c的值為a,b,c或d時,均執(zhí)行l(wèi)etter+第48頁,共97頁。(5)在運用switch時要注意符合語句的語法規(guī)則。int a,b,c;a=3;b=4;swit

19、ch(c) case 2.5: /常量表達式的值應(yīng)為字符型或整型,不能為實型 case a+b: /a+b不是常量表達式 case 1,2,3: /不能用這種表示方法來實現(xiàn)多個入口執(zhí)行同一語句第49頁,共97頁。從開關(guān)語句的執(zhí)行過程可知,任一開關(guān)語句都可以用條件語句來實現(xiàn),但有些條件語句不可以用開關(guān)語句來實現(xiàn)。這是由于開關(guān)語句中限定了表達式的取值類型,而條件語句中的條件表達式可取任意類型的值。第50頁,共97頁?!纠?.6】根據(jù)輸入的百分制成績給學生打等第。90分及以上為“excellent” 8089分為“fine” 7079分為“better” 6069分為“passed” 60分以下為“

20、failed”。分析:輸入的成績是百分制的,若用原始成績來構(gòu)造switch語句,那就需要幾十個入口,考慮到分數(shù)段與等第對應(yīng)的情況(基本以10分為區(qū)間),先把成績?nèi)フ?0,這樣對應(yīng)的case語句的數(shù)量相對合理。第51頁,共97頁。程序如下:#includevoid main( )int score;coutscore;cout”n該學生的等第為:”;第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è)計一個簡單的計算器:能完成兩個數(shù)的加、減、乘、除運算。如輸入1.5*3,則輸出為1.5*3=4.5。程序如下:#include void main( ) float n1,n2,result; char op;coutn1opn2;coutendl;coutn1opn2”=” ;分析:從鍵盤上讀取運算數(shù)和運算符,根據(jù)不同的運算符進行運算并輸出結(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é)果!(運算不能進行)” endl; 第55頁,共97頁。3.3 循環(huán)結(jié)構(gòu)在進行程序設(shè)計時,常常會有一些需要重復(fù)執(zhí)行的操作,可通過循環(huán)結(jié)構(gòu)來實現(xiàn)這種重復(fù)執(zhí)行的操作。例如,求s=1+2+3+100的和,在程序中不可能列出100個數(shù)再相加。第56頁,共97頁。要完成這樣的求和操作,可用以下步驟實現(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(;) 語句其中三個表達式可以是C+中的任一符合語法規(guī)則的表達式;“語句”可以是任意C+的語句,是for的內(nèi)嵌語句,把它稱為循環(huán)體。第58頁,共97頁。執(zhí)行過程:1)先求出表達式1的值;2)求出表達式2的值,若表達式2的值為非0,則轉(zhuǎn)去(3),否則轉(zhuǎn)去(4);3)執(zhí)行語句,然后求表達式3的值,轉(zhuǎn)去(2

24、);4)結(jié)束循環(huán),執(zhí)行for的下一個語句。表達式2循環(huán)體語句是(非0)for語句執(zhí)行流程表達式1表達式3否(0)for的下一語句第59頁,共97頁。例如,求s=1+2+3+100的和。s=0;for(i=1;i=100;i+)s=s+i;其中:表達式1是i=1,即給控制循環(huán)的變量i賦初始值1;表達式2是i=100,是控制循環(huán)的條件,即當i=100時,繼續(xù)求累加和(執(zhí)行循環(huán)體s=s+i);表達式3是i+,使循環(huán)變量發(fā)生增值,以控制循環(huán)可以結(jié)束。第60頁,共97頁。說明:(1)從for語句的執(zhí)行過程可知,語句執(zhí)行時,先判斷循環(huán)條件,若條件滿足,才執(zhí)行循環(huán)體,所以有可能循環(huán)體一次也不執(zhí)行。(2)fo

25、r語句的三個表達式可以是任意表達式,也可以是逗號表達式。例如:for(s=0,i=1; i=100; i+)s=s+i;逗號表達式第61頁,共97頁。(3)表達式之間以分號間隔;三個表達式可以部分省略或全部省略,但分號不能省略。例如:s=0;i=1;for( ; i=100;i+ )s=s+i; /省略了表達式1或:s=0;i=1;for( ; i=100;)s=s+i; i+;/省略了表達式1和表達式3第62頁,共97頁?;颍簊=0;i=1;for( ; ; i+)s=s+i;/省略了表達式1和表達式2這里省略了表達式2,系統(tǒng)約定,相當于其值為1,這樣循環(huán)就會無終止地進行,形成了死循環(huán)。為避

26、免這種情況,要在循環(huán)體的語句里增加終止循環(huán)的語句。第63頁,共97頁?;颍簊=0;i=1;for( ; ; )/三個表達式都省略這時,三個表達式都省略了,循環(huán)變量的增值語句放在循環(huán)體內(nèi),同時在循環(huán)體內(nèi)要有使循環(huán)結(jié)束的條件,否則也會產(chǎn)生死循環(huán)。第64頁,共97頁?!纠?.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】驗證一個數(shù)是否為素數(shù)。程序如下:#includevoid main( )int n,m,prime=1;coutn;分析:驗證一個正整數(shù)(n3)是否為素數(shù),只要看在2n/2范圍內(nèi)是否找到一個整數(shù)m能將n整除,若m存在,則n不是素數(shù),否則n是素數(shù)。第67頁,共97頁。for(m=2;m=n/2;m+)/在2范圍里去找是否有能將n整除的mif (n%m= =0)prime=0; /當找到一個時,將標志prime置0if (prime)/根據(jù)prime的值來確認n是否為素數(shù)cout”n”n”是素數(shù)!n”;elsecout”n”n”不是

28、素數(shù)!n”;第68頁,共97頁。3.3.2 while語句一般格式為:while () 語句其中:表達式是C+中的任意的表達式;語句可以是任意語句,也可以是復(fù)合語句,是while的內(nèi)嵌語句,把它稱為循環(huán)體。第69頁,共97頁。執(zhí)行過程:1)先求出表達式的值;2)當表達式的值為非0,轉(zhuǎn)去(3),否則轉(zhuǎn)去(4);3)執(zhí)行循環(huán)體語句;4)結(jié)束循環(huán),執(zhí)行while的下一個語句。表達式循環(huán)體語句是(非0)while語句執(zhí)行流程否(0)while的下一語句第70頁,共97頁。說明:從語句的執(zhí)行過程可知,先判斷條件再執(zhí)行循環(huán)體,所以有可能循環(huán)體一次也不執(zhí)行。在循環(huán)體內(nèi)或在表達式內(nèi),必須有改變表達式值的操作,

29、否則,會使循環(huá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)體外,表達式i=100是控制循環(huán)的條件,使循環(huán)變量發(fā)生增值的i+置于循環(huán)體內(nèi)。第72頁,共97頁。【例3.10】打印Fibonacci數(shù)列。程序如下:#includevoid main( )int n,m=3;long fib,fib1=1,fib2=1;coutn;coutendl; cout” 數(shù)列的前”n”項打印如下:”endl; 分析:Fibonacci數(shù)列是1,1,2,3,5,8,

30、數(shù)列中后一個數(shù)是前兩個數(shù)之和,可用迭代的方法進行。迭代關(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 (); 其中表達式是C+中的符合語法規(guī)則的表達式;語句可以是任意C+的語句,是內(nèi)嵌語句,把它稱為循環(huán)體。第75頁,共97頁。執(zhí)行過程:1)執(zhí)行循環(huán)體語句; 2)求表達式的值;3)若表達式的值為非0,則轉(zhuǎn)去(1),否則轉(zhuǎn)去(4);4)結(jié)束循環(huán),執(zhí)行dowhile的下一個語句。表達

31、式循環(huán)體語句是(非0)do.while語句執(zhí)行流程否(0)do.while的下一語句第76頁,共97頁。說明:從dowhile語句的執(zhí)行過程可知,是先執(zhí)行循環(huán)體再判斷條件,所以不管表達式的值是否為0,循環(huán)體至少執(zhí)行一次。在循環(huán)體內(nèi)或在表達式內(nèi),同樣要有改變表達式值的操作,否則會使循環(huá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)時,先執(zhí)行s=s+i; i+;,再計算i=100,循環(huán)是先執(zhí)行再判斷,與while語句不同。第78頁,共97頁?!纠?/p>

32、3.11】輸入一行字符,以換行符結(jié)束,并依次輸出該行字符。#include void main( )char c;cout”輸入一行字符:”;cin.get(c);分析:從輸入緩沖區(qū)中讀取字符,每讀取一個就輸出一個,直到讀到的是換行符為止。第79頁,共97頁。docoutc;cin.get(c);while( c!=n );coutendl;執(zhí)行程序時屏幕顯示:輸入一行字符:若輸入:Hello! How are you?則輸出:Hello! How are you?執(zhí)行程序時,輸入的字符先送到輸入緩沖區(qū),只有按下回車后,系統(tǒng)才開始在輸入緩沖區(qū)依次讀取字符。第80頁,共97頁。3.3.4 三種循

33、環(huán)語句的比較1. 對于重復(fù)結(jié)構(gòu)的程序段,可用三種循環(huán)語句中的一個來實現(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)時,循環(huán)變量賦初始值應(yīng)在循環(huán)語句之前完成;而for語句中表達式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+語句,當然也可以是另一個循環(huán)語句。一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套,內(nèi)嵌的循環(huán)中還可以嵌套循環(huán)。這種嵌套的循環(huán)也稱多重循環(huán)。在構(gòu)造多重循環(huán)時應(yīng)注意循環(huán)不能交叉,只能嵌套。在C+中,對循環(huán)嵌套的層次沒有限制。 第82頁,共97頁?!纠?.12】打印九九乘法表分析:乘法表共有九行,用變量i控制行數(shù)(i取19),作為外循環(huán);對每一行,輸出的列數(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; /當內(nèi)循環(huán)執(zhí)行完畢后,一行結(jié)束,打印換行符 注意:多重循環(huán)在執(zhí)行時,外循環(huán)每執(zhí)行一次,內(nèi)循環(huán)要執(zhí)行完畢。 第84頁,共97頁?!纠?.13】用雙重循環(huán)控制打印下列圖形* * * *分析:這個圖形4行8列,每行的起始位置稍有變化,可以用setw( )來實現(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等.壓縮文件請下載最新的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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論