VC--程序結(jié)構(gòu)課件(PPT 50頁(yè))_第1頁(yè)
VC--程序結(jié)構(gòu)課件(PPT 50頁(yè))_第2頁(yè)
VC--程序結(jié)構(gòu)課件(PPT 50頁(yè))_第3頁(yè)
VC--程序結(jié)構(gòu)課件(PPT 50頁(yè))_第4頁(yè)
VC--程序結(jié)構(gòu)課件(PPT 50頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第三章VC+程序結(jié)構(gòu)順序、選擇、循環(huán)第1頁(yè),共50頁(yè)。程序的三種基本結(jié)構(gòu) 順序結(jié)構(gòu)a塊b塊AB分支選擇結(jié)構(gòu)a塊b塊成立不成立條件AB條件a 塊成立不成立AB 循環(huán)結(jié)構(gòu)第2頁(yè),共50頁(yè)。賦值表達(dá)式深入“再談”變量占位符擁有內(nèi)存空間的標(biāo)識(shí)符變量的輸入,即將值存入對(duì)應(yīng)內(nèi)存對(duì)變量的賦值,用新值覆蓋性地改寫原來(lái)存儲(chǔ)的值變量的引用即將對(duì)應(yīng)內(nèi)存中的值代換變量int a;acina;a=10;2int b=a;10b10?如何理解語(yǔ)句a=a+1;?如何交換變量a、b的值第3頁(yè),共50頁(yè)。賦值表達(dá)式深入賦值表達(dá)式:左結(jié)合,所賦之值為表達(dá)式的值??勺鳛椴僮鲾?shù)參與其他運(yùn)算。b=c=d=a+5a=(b=4)+(c=6

2、)復(fù)合賦值表達(dá)式+=、-=、*=、/=a+=3 等價(jià)于 a=a+3賦值表達(dá)式加“;”即可稱為賦值語(yǔ)句第4頁(yè),共50頁(yè)。賦值表達(dá)式深入賦值時(shí)的類型轉(zhuǎn)換整型實(shí)型 :去掉小數(shù)賦值,注意溢出實(shí)型整型 :加 .0整型unsigned char :按字節(jié)賦值,高八位補(bǔ)0整型signed char :按字節(jié)賦值,擴(kuò)展符號(hào)位整型unsigned int 或 long int : 注意溢出強(qiáng)制的類型轉(zhuǎn)換溢出:超出可表示范圍,結(jié)果出錯(cuò),系統(tǒng)不報(bào)錯(cuò)第5頁(yè),共50頁(yè)。賦值表達(dá)式深入賦值時(shí)的類型轉(zhuǎn)換int a=258,b;unsigned char c;b=c=a;b=?int a=254,b;char c;b=c=a

3、;b=?第6頁(yè),共50頁(yè)。特殊的算術(shù)運(yùn)算自增運(yùn)算()int p1;p+; /等價(jià)于p=p+1;只有變量有自增運(yùn)算自增運(yùn)算分前置自增(+p)和后置自增(p+)前置自增:先自增、再取值后置自增:先取值、再自增int p=1,a;a=+p; /和a=p+;結(jié)果比較自減()第7頁(yè),共50頁(yè)。選擇語(yǔ)句第8頁(yè),共50頁(yè)。選擇結(jié)構(gòu)之條件語(yǔ)句條件語(yǔ)句利用關(guān)鍵字if選擇執(zhí)行兩個(gè)分支中的一個(gè)分支,因此通常也稱為“if語(yǔ)句”。分支選擇結(jié)構(gòu)a塊b塊成立不成立條件AB當(dāng)(如果)條件成立時(shí)執(zhí)行a塊if (條件成立)a塊語(yǔ)句;如何表達(dá)?第9頁(yè),共50頁(yè)。關(guān)系運(yùn)算符與關(guān)系表達(dá)式 關(guān)系運(yùn)算是對(duì)兩個(gè)操作數(shù)進(jìn)行的比較運(yùn)算: = =

4、 !=關(guān)系表達(dá)式的運(yùn)算結(jié)果是一個(gè)整數(shù)當(dāng)關(guān)系成立時(shí),結(jié)果為1當(dāng)關(guān)系不成立時(shí),結(jié)果為0。關(guān)系表達(dá)式多用于條件的判斷第10頁(yè),共50頁(yè)。選擇結(jié)構(gòu)之條件語(yǔ)句引例:已知,當(dāng)x1時(shí),y=x,其中x、y均為整數(shù),請(qǐng)編程實(shí)現(xiàn)根據(jù)x的值輸出y的值。分析:主要問(wèn)題當(dāng)(如果)x1時(shí),y=x轉(zhuǎn)換代碼if (x=1)y=x;補(bǔ)充代碼塊內(nèi)只有一條語(yǔ)句時(shí),可省第11頁(yè),共50頁(yè)。例:當(dāng)x1時(shí),y=x,其中x、y均為整數(shù)。#includevoid main()int x,y;coutx;if(x=1)y=x;couty=yendl;單選條件語(yǔ)句條件表達(dá)式”x=1”要用圓括號(hào)括起來(lái)if所在行末尾沒(méi)有分號(hào)!為什么?第12頁(yè),共5

5、0頁(yè)。二中選一條件語(yǔ)句#includevoid main()int x,y;coutx;if(x1)y=2*x-1;couty=y1可簡(jiǎn)化為:if(x1非此即彼第13頁(yè),共50頁(yè)。嵌套條件語(yǔ)句#includevoid main()int x,y;coutx;if(x1 & x=10)y=3*x+11;couty=yn;分段函數(shù)y=x 當(dāng)x1y=2x-1 當(dāng)1x1 & x10是何意?為何不寫成1x0 & y0 成立;x & y0 成立; x & y 成立。x0 | y0 成立;x | y 成立。!(x0) 不成立;!(x!=1) 成立;!x 不成立。如果x=0,y=-1,則 x0 & y0 不成

6、立;x & y0 不成立; x & y 不成立。x0 | y0 不成立;x | y 成立。!(x0) 成立;!(x!=1) 不成立;!x 成立。第16頁(yè),共50頁(yè)。課內(nèi)練習(xí):?數(shù)學(xué)中xa或xb, 在c+中應(yīng)如何表示?數(shù)學(xué)中axb , 在c+中應(yīng)如何表示第17頁(yè),共50頁(yè)?;氐角短讞l件語(yǔ)句#includevoid main()int x,y;coutx;if(x1 & x=10)y=3*x+11;couty=yn;分段函數(shù)y=x 當(dāng)x1y=2x-1 當(dāng)1x10y=3x+11 當(dāng)x10可簡(jiǎn)化為:if(x=1)y=x;else if(x1 & x1代表?xiàng)l件 x=10第18頁(yè),共50頁(yè)。條件運(yùn)算符”?

7、:”條件運(yùn)算符“? :”為三目運(yùn)算符,要求有三個(gè)操作對(duì)象,使用格式為: ? : 計(jì)算條件表達(dá)式值的具體過(guò)程如下:先計(jì)算,若其值不等于0,則計(jì)算,并將計(jì)算的值作為該條件表達(dá)式的值;否則求解的值,并將該值作為條件表達(dá)式的值。條件條件成立條件不成立第19頁(yè),共50頁(yè)。例:求兩個(gè)整數(shù)中的較大數(shù)#includevoid main()int a,b,max;couta;coutb;if(a=b)max=b;elsemax=a;coutmax=maxn;可簡(jiǎn)化為:max=(a=b) ? b : a;第20頁(yè),共50頁(yè)。例:輸入兩個(gè)整數(shù),按從小到大的順序輸出這兩個(gè)數(shù)。#includevoid main()in

8、t a,b;couta;coutb;if(a=b)couta,bn;elsecoutb,an;一行可以寫多條語(yǔ)句。另一種方法:如果a比b大,則將a、b的值交換后再輸出。第21頁(yè),共50頁(yè)。第一個(gè)算法:交換兩個(gè)變量的值#includevoid main()int a,b,t;couta;coutb;if(ab)t=a;a=b;b=t;couta,bendl;可不可以寫成:a=b;b=a;if分支語(yǔ)句如果不止一條,則須把這些語(yǔ)句用花括號(hào)括起來(lái)。用花括號(hào)括起來(lái)的語(yǔ)句稱之為復(fù)合語(yǔ)句。第22頁(yè),共50頁(yè)。if(條件)語(yǔ)句小結(jié)單選條件:if () 嵌套條件(多條件):if () else if() els

9、e if else 二選一條件:if () else 第23頁(yè),共50頁(yè)。條件語(yǔ)句小結(jié)上述三種形式中的可以是一般的表達(dá)式,也可為一個(gè)變量。表達(dá)式的值用來(lái)表示“條件”,必須放在括號(hào)中。if和else后的部分如果有多個(gè)語(yǔ)句,則必須用大括號(hào) 括起來(lái),構(gòu)成復(fù)合語(yǔ)句;對(duì)于單個(gè)語(yǔ)句,則可以不用大括號(hào)。第24頁(yè),共50頁(yè)。條件語(yǔ)句小結(jié)if和else后的還可以是if語(yǔ)句。如: if ( ) if ( ) 語(yǔ)句1 else ( ) 語(yǔ)句2 else if ( ) 語(yǔ)句3 else ( ) 語(yǔ)句4else不能單獨(dú)使用,必須與最近的if配對(duì)。(語(yǔ)句行縮進(jìn))第25頁(yè),共50頁(yè)。switch語(yǔ)句(開(kāi)關(guān)語(yǔ)句)與嵌套語(yǔ)句類

10、似,用于多條件選擇switch() case : 語(yǔ)句序列1 break; case : 語(yǔ)句序列n break; default: 控制表達(dá)式(整型、字符型)情況常數(shù)(整型、字符型)第26頁(yè),共50頁(yè)。switch語(yǔ)句(開(kāi)關(guān)語(yǔ)句) switch語(yǔ)句的執(zhí)行過(guò)程為先計(jì)算switch控制表達(dá)式的值然后,將該值與每個(gè)case分支中的常量表達(dá)式的值進(jìn)行比較如果相等,則執(zhí)行該分支后面的語(yǔ)句序列,直到遇到一個(gè)break為止,結(jié)束switch結(jié)構(gòu);如果沒(méi)有一個(gè)相等,則執(zhí)行default分支中的語(yǔ)句序列;如果既沒(méi)有匹配的case,又沒(méi)有default分支,則不執(zhí)行該switch結(jié)構(gòu)中的任何語(yǔ)句。第27頁(yè),共5

11、0頁(yè)。課堂練習(xí),找出語(yǔ)法錯(cuò)誤 #define m 4/宏定義const int n=3;float x; int a,b;a=3; b=4;switch(2*x) /A case 3.5: /B case a+b: /C case 1,2,3: /D case 3*m: /E case m+n: /F 第28頁(yè),共50頁(yè)。switch語(yǔ)句(開(kāi)關(guān)語(yǔ)句)“break”語(yǔ)句稱為跳轉(zhuǎn)語(yǔ)句用于跳出switch語(yǔ)句,終止switch語(yǔ)句的執(zhí)行在一個(gè)case分支中,如果沒(méi)有break語(yǔ)句,則switch在執(zhí)行完一個(gè)case分支之后,會(huì)繼續(xù)執(zhí)行下一個(gè)case分支語(yǔ)句在一個(gè)case分支的語(yǔ)句序列中,break語(yǔ)

12、句通常都為最后一條語(yǔ)句?!癲efault”為缺省分支相當(dāng)于嵌套條件語(yǔ)句中的else它的作用是匹配“除上述case之外的一切情況”default分支語(yǔ)句可以放在switch語(yǔ)句中的任何位置,但通常為最后一個(gè)分支,因?yàn)樵谒蟮腸ase分支不起任何作用第29頁(yè),共50頁(yè)。例:要求按照考試成績(jī)的等級(jí)打印出分?jǐn)?shù)段 switch(grade) case a: cout“85-100n”; case b: cout“70-84n”; case c: cout“60-69n”; case d: cout“60n”; default: cout“errorn”; ?如果grade的值為c,輸出結(jié)果是什么60-

13、6960error多余輸出?每個(gè)case語(yǔ)句序列后缺少break語(yǔ)句!第30頁(yè),共50頁(yè)。switch(grade) case a: cout“85-100n”;break; case b: cout“70-84n”; break; case c: cout“60-69n”; break; case d: cout“60n”; break; default: cout“errorn”; 為了只輸出對(duì)應(yīng)標(biāo)號(hào)對(duì)應(yīng)的結(jié)果,可在語(yǔ)句后加上break語(yǔ)句! 第31頁(yè),共50頁(yè)。多個(gè)case可以共用一組執(zhí)行語(yǔ)句,例: case a: case b: case c: cout60n”; break;在swi

14、tch結(jié)構(gòu)中,case的多個(gè)執(zhí)行語(yǔ)句不需要用花括號(hào)括起來(lái).需要缺省break語(yǔ)句情況又例,教材P45第32頁(yè),共50頁(yè)。使用switch語(yǔ)句的注意點(diǎn)每個(gè)case常量表達(dá)式值必須互不相同,否則就會(huì)出現(xiàn)編譯錯(cuò)誤 。 switch后控制表達(dá)式必須是整數(shù)、字符或枚舉類型的變量或常量,同樣,每一個(gè)case分支后的常量表達(dá)式必須是由字面常量、宏定義的常量、const常量構(gòu)成的表達(dá)式,其值也必須是整數(shù)、字符或枚舉類型的常量。且每一個(gè)case分支只能判別一個(gè)常量。(書例P46) switch結(jié)構(gòu)的執(zhí)行部分為由多個(gè)case分支及可缺省的default分支組成的復(fù)合語(yǔ)句,switch語(yǔ)句下面的大括號(hào)不能省。 sw

15、itch語(yǔ)句允許嵌套。第33頁(yè),共50頁(yè)。循環(huán)結(jié)構(gòu)語(yǔ)句第34頁(yè),共50頁(yè)。循環(huán)結(jié)構(gòu) 循環(huán)結(jié)構(gòu)一般由兩部分組成: 進(jìn)入或退出循環(huán)的條件:該條件決定是否繼續(xù)下一輪循環(huán)。當(dāng)該條件滿足時(shí),進(jìn)入下一輪循環(huán),否則退出循環(huán)。 循環(huán)體:為每一輪循環(huán)所進(jìn)行的操作,通常由一個(gè)語(yǔ)句序列構(gòu)成。 條件a 塊成立不成立AB 循環(huán)結(jié)構(gòu)第35頁(yè),共50頁(yè)。 while()語(yǔ)句 while( )語(yǔ)句屬于當(dāng)型循環(huán)結(jié)構(gòu): while() while( )語(yǔ)句的執(zhí)行流程為先計(jì)算循環(huán)條件表達(dá)式的值若不等于0,則執(zhí)行循環(huán)體中的語(yǔ)句循環(huán)體執(zhí)行完畢后,再計(jì)算循環(huán)條件表達(dá)式的值,重復(fù)以上過(guò)程,直到條件循環(huán)表達(dá)式的值等于0時(shí),退出循環(huán)。條件a

16、塊成立不成立AB 循環(huán)結(jié)構(gòu)第36頁(yè),共50頁(yè)。應(yīng)用while()語(yǔ)句的注意點(diǎn)while后的“條件表達(dá)式”一定要用一對(duì)圓括弧“( )”括起來(lái)。如果循環(huán)體中的語(yǔ)句多于一條時(shí),應(yīng)該用大括號(hào)“”括起來(lái)。在循環(huán)體中必須有改變“循環(huán)條件表達(dá)式”值的語(yǔ)句。否則,如果不采用其它方法退出循環(huán),將不能退出循環(huán),成為死循環(huán)。 while循環(huán)可以嵌套。留心邊界值(循環(huán)次數(shù))。第37頁(yè),共50頁(yè)。試編程計(jì)算1+2+3+4+100的值。void main() int i=1,sum=0; while(i=100) sum=sum+i; i+; coutsum ; 和變量,初值為0!第38頁(yè),共50頁(yè)。dowhile()語(yǔ)

17、句 dowhile()語(yǔ)句的結(jié)構(gòu)屬于直到型循環(huán)結(jié)構(gòu),其一般格式為: do while(); dowhile()語(yǔ)句的執(zhí)行流程為當(dāng)程序運(yùn)行到do時(shí),立即執(zhí)行循環(huán)體然后計(jì)算循環(huán)條件表達(dá)式如果循環(huán)條件表達(dá)式的值不為0,則繼續(xù)執(zhí)行循環(huán)體如此反復(fù),直到循環(huán)條件表達(dá)式的值為0,結(jié)束循環(huán)。 第39頁(yè),共50頁(yè)。應(yīng)用dowhile()語(yǔ)句的注意點(diǎn)在while()中要注意的地方同樣也適用于dowhile()語(yǔ)句對(duì)dowhile()還要特別注意一點(diǎn),即while()后的分號(hào)不能少 在一般情況下,用while()語(yǔ)句和dowhile()語(yǔ)句處理同一個(gè)問(wèn)題時(shí),如果兩者的循環(huán)體和條件表達(dá)式都相同,則他們的結(jié)果也一樣。但

18、是當(dāng)while后面的條件表達(dá)式一開(kāi)始就為0時(shí),兩種循環(huán)的結(jié)果是不一樣的。第40頁(yè),共50頁(yè)。試編程計(jì)算1+2+3+4+100的值。void main() int i=1,sum=0; do sum=sum+i; i+; while(i=100) ; coutsum ; 與while循環(huán)的區(qū)別: 先執(zhí)行循環(huán)體語(yǔ)句,再判斷條件表達(dá)式,因此do/while循環(huán)至少循環(huán)一次,而while循環(huán)有可能一次循環(huán)都不執(zhí)行!第41頁(yè),共50頁(yè)。例:用迭代法求a0的平方根。其迭代公式為:x0=a/2,xn+1=(xn+a/xn)/2。要求前后兩次求出的x的差的絕對(duì)值小于10-7。#include #include

19、 void main() float x0,x1,a; cina; if(a0) couta1e-5) x0=x1; x1=(x0+a/x0)/2; couta“的平方根為:”x1n;第42頁(yè),共50頁(yè)。for語(yǔ)句for(;) 非00求解表達(dá)式1表達(dá)式2循環(huán)體求解表達(dá)式3for()語(yǔ)句的后繼語(yǔ)句for()語(yǔ)句的流程圖控制表達(dá)式賦初值表達(dá)式修正表達(dá)式定義循環(huán)變量或?qū)ρh(huán)變量進(jìn)行初始化改變表達(dá)式2中循環(huán)變量的值第43頁(yè),共50頁(yè)。試用for循環(huán)編程求1+2+3+100的值void main() int i,sum=0; for(i=1;i=100;i+) sum=sum+i; cout“SUM i

20、s”sum;表達(dá)式1可以省略,但應(yīng)寫在for循環(huán)之前,如下:i=1;for(;i=100;i+) sum=sum+i;表達(dá)式3可以省略,但應(yīng)寫在for循環(huán)體內(nèi),如下:i=1;for(; i=100; ) sum=sum+i; i+;兩個(gè)“;”永不可缺?。〉?4頁(yè),共50頁(yè)。試編程輸出100200之間的能被3整除的數(shù)#includevoid main()int i;for(i=100;i=200;i+)if(i%3=0) coutit;求解“在指定范圍找某種特征值”的問(wèn)題:1.范圍可作為循環(huán)控制變量的計(jì)數(shù)范圍。2.循環(huán)體中用“特征公式”對(duì)循環(huán)變量的每次取值進(jìn)行特征篩選。?求解能被11整除的三位數(shù)第45頁(yè),共50頁(yè)。 break語(yǔ)句與 continue語(yǔ)句break語(yǔ)句的一般格式為: break; 立即結(jié)束整個(gè)循環(huán)過(guò)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論