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

下載本文檔

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

文檔簡介

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

2、)復合賦值表達式+=、-=、*=、/=a+=3 等價于 a=a+3賦值表達式加“;”即可稱為賦值語句第4頁,共50頁。賦值表達式深入賦值時的類型轉(zhuǎn)換整型實型 :去掉小數(shù)賦值,注意溢出實型整型 :加 .0整型unsigned char :按字節(jié)賦值,高八位補0整型signed char :按字節(jié)賦值,擴展符號位整型unsigned int 或 long int : 注意溢出強制的類型轉(zhuǎn)換溢出:超出可表示范圍,結(jié)果出錯,系統(tǒng)不報錯第5頁,共50頁。賦值表達式深入賦值時的類型轉(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頁,共50頁。特殊的算術運算自增運算()int p1;p+; /等價于p=p+1;只有變量有自增運算自增運算分前置自增(+p)和后置自增(p+)前置自增:先自增、再取值后置自增:先取值、再自增int p=1,a;a=+p; /和a=p+;結(jié)果比較自減()第7頁,共50頁。選擇語句第8頁,共50頁。選擇結(jié)構之條件語句條件語句利用關鍵字if選擇執(zhí)行兩個分支中的一個分支,因此通常也稱為“if語句”。分支選擇結(jié)構a塊b塊成立不成立條件AB當(如果)條件成立時執(zhí)行a塊if (條件成立)a塊語句;如何表達?第9頁,共50頁。關系運算符與關系表達式 關系運算是對兩個操作數(shù)進行的比較運算: = =

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

5、0頁。二中選一條件語句#includevoid main()int x,y;coutx;if(x1)y=2*x-1;couty=y1可簡化為:if(x1非此即彼第13頁,共50頁。嵌套條件語句#includevoid main()int x,y;coutx;if(x1 & x=10)y=3*x+11;couty=yn;分段函數(shù)y=x 當x1y=2x-1 當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頁,共50頁。課內(nèi)練習:?數(shù)學中xa或xb, 在c+中應如何表示?數(shù)學中axb , 在c+中應如何表示第17頁,共50頁?;氐角短讞l件語句#includevoid main()int x,y;coutx;if(x1 & x=10)y=3*x+11;couty=yn;分段函數(shù)y=x 當x1y=2x-1 當1x10y=3x+11 當x10可簡化為:if(x=1)y=x;else if(x1 & x1代表條件 x=10第18頁,共50頁。條件運算符”?

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

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

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

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

11、0頁。課堂練習,找出語法錯誤 #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頁,共50頁。switch語句(開關語句)“break”語句稱為跳轉(zhuǎn)語句用于跳出switch語句,終止switch語句的執(zhí)行在一個case分支中,如果沒有break語句,則switch在執(zhí)行完一個case分支之后,會繼續(xù)執(zhí)行下一個case分支語句在一個case分支的語句序列中,break語

12、句通常都為最后一條語句?!癲efault”為缺省分支相當于嵌套條件語句中的else它的作用是匹配“除上述case之外的一切情況”default分支語句可以放在switch語句中的任何位置,但通常為最后一個分支,因為在它之后的case分支不起任何作用第29頁,共50頁。例:要求按照考試成績的等級打印出分數(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多余輸出?每個case語句序列后缺少break語句!第30頁,共50頁。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”; 為了只輸出對應標號對應的結(jié)果,可在語句后加上break語句! 第31頁,共50頁。多個case可以共用一組執(zhí)行語句,例: case a: case b: case c: cout60n”; break;在swi

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

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

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

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

18、是當while后面的條件表達式一開始就為0時,兩種循環(huán)的結(jié)果是不一樣的。第40頁,共50頁。試編程計算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)體語句,再判斷條件表達式,因此do/while循環(huán)至少循環(huán)一次,而while循環(huán)有可能一次循環(huán)都不執(zhí)行!第41頁,共50頁。例:用迭代法求a0的平方根。其迭代公式為:x0=a/2,xn+1=(xn+a/xn)/2。要求前后兩次求出的x的差的絕對值小于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頁,共50頁。for語句for(;) 非00求解表達式1表達式2循環(huán)體求解表達式3for()語句的后繼語句for()語句的流程圖控制表達式賦初值表達式修正表達式定義循環(huán)變量或?qū)ρh(huán)變量進行初始化改變表達式2中循環(huán)變量的值第43頁,共50頁。試用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;表達式1可以省略,但應寫在for循環(huán)之前,如下:i=1;for(;i=100;i+) sum=sum+i;表達式3可以省略,但應寫在for循環(huán)體內(nèi),如下:i=1;for(; i=100; ) sum=sum+i; i+;兩個“;”永不可缺??!第44頁,共50頁。試編程輸出100200之間的能被3整除的數(shù)#includevoid main()int i;for(i=100;i=200;i+)if(i%3=0) coutit;求解“在指定范圍找某種特征值”的問題:1.范圍可作為循環(huán)控制變量的計數(shù)范圍。2.循環(huán)體中用“特征公式”對循環(huán)變量的每次取值進行特征篩選。?求解能被11整除的三位數(shù)第45頁,共50頁。 break語句與 continue語句break語句的一般格式為: break; 立即結(jié)束整個循環(huán)過

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論