![選擇程序設計_第1頁](http://file4.renrendoc.com/view/77eb54a7daf0c4fbc1b23527fbef3344/77eb54a7daf0c4fbc1b23527fbef33441.gif)
![選擇程序設計_第2頁](http://file4.renrendoc.com/view/77eb54a7daf0c4fbc1b23527fbef3344/77eb54a7daf0c4fbc1b23527fbef33442.gif)
![選擇程序設計_第3頁](http://file4.renrendoc.com/view/77eb54a7daf0c4fbc1b23527fbef3344/77eb54a7daf0c4fbc1b23527fbef33443.gif)
![選擇程序設計_第4頁](http://file4.renrendoc.com/view/77eb54a7daf0c4fbc1b23527fbef3344/77eb54a7daf0c4fbc1b23527fbef33444.gif)
![選擇程序設計_第5頁](http://file4.renrendoc.com/view/77eb54a7daf0c4fbc1b23527fbef3344/77eb54a7daf0c4fbc1b23527fbef33445.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、選擇程序設計關(guān)系運算符和關(guān)系表達式邏輯運算符和邏輯表達式 if語句 switch語句程序舉例1. 結(jié)構(gòu)化程序設計任何程序都可以用三種基本結(jié)構(gòu)表示優(yōu)點:結(jié)構(gòu)清晰,易讀,提高程序設計質(zhì)量和效率2. 三種基本結(jié)構(gòu)順序結(jié)構(gòu)AB流程圖程序的三種基本結(jié)構(gòu)PAB真假 選擇結(jié)構(gòu)kA1A2AiAnk=k2k=k1k=knk=ki.程序的三種基本結(jié)構(gòu) 循環(huán)結(jié)構(gòu)PA假真AP真假程序的三種基本結(jié)構(gòu)C語句: 以“;”作分隔符,編譯后產(chǎn)生機器指令C語句分類表達式語句:表達式加分號構(gòu)成??照Z句: ;如: int a, b, c; a=3; a=1, b=3, a-b; 語句種類if( ) else switchfor( )
2、 while( ) do while( )continuebreakgotoreturn分支循環(huán)輔助控制程序控制語句(9種):復合語句:用 括起來的一組語句一般形式: 數(shù)據(jù)說明部分; 執(zhí)行語句部分; 說明: 后不加分號語法上的地位 與 單一語句 相同復合語句還可 嵌套語句種類#include void main() int a=0,b=0; a+; b+; 選擇結(jié)構(gòu) 根據(jù)指定的條件是否滿足, 決定是否執(zhí)行語句(塊)形式如果(那么我有了錢 )形式成績?yōu)?5分:如果(成績大于等于60) 那么 打印“及格”算法int cj=75;if( ) prinf(“及格”);cj=60邏輯結(jié)果(真、假)如何表
3、示條件?關(guān)系運算符邏輯運算符關(guān)系運算符、=、 =、!=優(yōu)先級相同且高于 = !=、!=(優(yōu)先級相同)關(guān)系運算的結(jié)果為邏輯值1表示真,0表示假。89 為 04+5=9 為1= 是等于; =是賦值注意區(qū)分“=”與“= =”例: int a = 0,b = 1; if (a = b) printf(“a is equal to b”); else printf(“a is not equal to b”);b的值賦給a,只要b不為0,表達式的值為真邏輯運算符!:邏輯求反(單目運算)&:邏輯與(雙目運算)|:邏輯或(雙目運算)優(yōu)先級! 高于 & 高于 | 邏輯運算結(jié)果真值表ab!a!ba&ba|b真假
4、真假假假真真真假假假假假真真假假真真真假真真關(guān)系與邏輯表達式數(shù)學表達式5x10如何表示? x5數(shù)學表達式y(tǒng)=10如何表示? y=10 | y=5510 xyyx和y如何表示?06085100 xy60=x=85 不行,應為:60=x & x=85(0=y&y=60 )|( 85=y&y9) 1 86 190|89 190|81 & 23 001 & 23 0運算量 : 0 表示“假”, 非0 表示“真”運算結(jié)果: 0 表示“假” , 1 表示“真”邏輯運算示例char c=b;int i = 3, j = 3;double x = 0.0;表達式等價表達式值x | i & j - 3a = c
5、 & c=zc 1=a | c + 1 = zx | (i & (j - 3) 0(a = c ) & (c =z) 1(c1)=a)| (c+1)=z) 1短路-值得注意的地方!在一個復雜的邏輯表達式,有的表達式可能沒有被運算到,稱為短路下面語句中,括號內(nèi)的賦值語句 有沒有被實際執(zhí)行到? a=9; b=8; c=3;d=0;x = ab;y = ab | (c=d);1900年是閏年嗎?閏年的條件能被4整除, 但不能被100整除能被100整除,又能被400整除 (year%4=0&year%100!=0)| ( year%400=0) 值為真(1)是閏年,否則為非閏年。分支(選擇)語句if
6、() else switch() 格式: if (expression) statementexprstatement非0=01. if語句(條件選擇語句)if語句的三種形式:形式一:執(zhí)行過程:注意:若statement有幾個語句,則用“”括起來。x=0)-1(x0)#include void main()int x, y; scanf(“%d”,&x);y=1;if(xb) t=a; a=b; b=t; printf(%5.2f,%5.2f,a,b);運行結(jié)果:例:輸入兩個實數(shù),按代數(shù)值由小到大的次序輸出這兩個數(shù)。不要漏掉! 執(zhí)行過程不同! if(ab) t=a;a=b;b=t; 形式二:
7、格式: if (expression) statement1 else statement2exprstatement1statement2非0=0執(zhí)行過程:注意:若statement有幾個語句,則用“”括起來。2. if語句(條件選擇語句)y= 1 (x=0)-1(x=0y=1y=-1是否執(zhí)行過程:#include void main()int x, y; scanf(“%d”,&x);if(x=0) y=1;else y=-1; printf(“%d”,y);條件運算符三目運算: d1 ? d2 : d3如果d1的值為1,整個表達式的值就是表達式d2的值;如果d1的值為0,整個表達式的值就
8、是d3的值例:int a=3, b=4,c;c=(a b ? a : b); 表達式的值為4使用條件運算符y= 1 (x=0)-1(x=0y=1y=-1是否執(zhí)行過程:#include void main()int x, y; scanf(“%d”,&x);printf(“y=%d”, x=0?1:-1);#include void main()float a,b;scanf(%f,%f,&a,&b);if(ab) printf(%5.2f,%5.2f,b,a);else printf(%5.2f,%5.2f,a,b);例:輸入兩個實數(shù),按代數(shù)值由小到大的次序輸出這兩個數(shù)。形式三:格式:if (
9、 expr1 ) statement1else if (expr2 ) statement2else if (expr3 ) statement3. else statement n expr1statement1非0=0expr2expr3statement nstatement3statement2非0非0=0=00.6 (number=1000)0.7 (800=number1000)0.8 (600=number800)0.9 (400=number600)1.0 (number1000) discount =0.6; else if(number800) discount =0.7;
10、 else if(number600) discount =0.8; else if(number400) discount =0.9; else discount =1.0; cost=discount * number; 例:計算物流公司的運費,可以根據(jù)數(shù)量打折。n1000d=0.6是否n800n600statement nstatement3d=0.7是是否否 if后面的表達式形式變化多(1) if(3) printf(“OK”);(2) if(a) printf(“%d”, a);(3) if (a%3) printf(“$”); else printf(“&”); 表示相等關(guān)系用“=
11、” (4) if (a=0) printf(“$”);(5) if(a=0) printf(“$”); ifelse else子句后不能跟條件例: 若有int a=6; if( a ) printf(“OK”);等價于 if( a != 0 ) printf(“OK”);等價于 if( !a = 0 ) printf(“OK”); if( !a ) printf(“OK”);等價于 if( a = 0 ) printf(“OK”);例: 若有int a=6; ifelse 的嵌套 !在多重分支(多重條件判斷)時,可用ifelse的嵌套。 if (x0) y= 1; else if(x=0) y
12、=0; else y=-1; if (x0) y=1;else if (x=0) y=0; else y=-1; 嵌套:if()if()if()else.else.else.if (expr1) if (expr2) statement1else statement2 內(nèi)嵌if如果if和else的數(shù)目不一樣,可以加花括弧來確定配對關(guān)系。 if ( ) if( ) statement1 else statement2if else 配對原則:缺省 時,else總是它上面離它最近的未配對的if配對例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a
13、!=b”); 修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);實現(xiàn)if else 正確配對方法:加 例: 輸入兩數(shù)并判斷其大小關(guān)系#include main() int x,y; printf(Enter integer x,y:); scanf(%d,%d,&x,&y); if(x!=y) if(xy) printf(XYn); else printf(XYn); else printf(X=Yn);運行:Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y#inclu
14、devoid main() int i,j; i=j=3; if(i3) printf(%dn,i+=+j); else printf(%dn,i-=-j); printf(%d,%dn,i,j);例 分析下列程序的輸出結(jié)果#includevoid main() int i,j; i=j=3; if(i3) printf(%dn,i+=+j); else printf(%dn,i-=-j); printf(%d,%dn,i,j);運行結(jié)果:11, 2運行結(jié)果:3, 3有一函數(shù) x (x1) y= 2x-1 (1=x=10)寫一程序,輸入x,輸出y。#includevoid main() flo
15、at x,y; scanf(%f,&x); if(x1) y=x; else if (x10 ) y=2*x-1; else y=3*x-11; printf(x=%7.2f,y=%7.2f,x,y);switch( 表達式) case E1: 語句組 1; break; case E2: 語句組 2; break; . case En: 語句組 n; break; default: 語句組 ; break; switch表達式語句組1語句組2語句組n語句組.E 1E 2Endefaultcase switch語句(開關(guān)分支語句)實現(xiàn)多分支的選擇結(jié)構(gòu)說明: E1,E2,En是常量表達式,且值必
16、須互不相同 語句標號作用,必須用break跳出 case后可包含多個可執(zhí)行語句,且不必加 多個case可共用一組執(zhí)行語句switch可嵌套switch語句例:輸入AE表示的成績的等級, 打印出相應的百分制分數(shù)范圍, A表示85-100 , B表示 70-84,C表示60-69,D表示60以下;switch(grade) case A: printf(“85-100 “);break; case B: printf(“70-84 “); break; case C: printf(“60-69 “); break; case D: printf(“60 “); break; default :
17、printf(“error“);#includevoid main()char grade; sacnf(“%c”,&grade); if (grade= =A) printf(“85-100 “);else if (grade= =B) printf(“70-84 “);else if (grade= =C) printf(“60-69“);else if (grade= =D) printf(“60“);else printf(“error“);例:給出一百分制成績,要求輸出成績等級:A,B,C,D,E。其中90分以上為A,8089分為B, 7079分為C, 6069分為D,60分以下為E
18、。 #includevoid main()int score; sacnf(“%d”,&score); switch( score/10 ) / switch( (int)(score/10) ) case 10: case 9: printf(“An”);break; case 8: printf(“Bn“); break; case 7: printf(“Cn“); break; case 6: printf(“Dn“); break; case 5: case 4: case 3: case 2: case 1: case 0: printf(“En“); break; default:
19、printf(“errorn“); 例: void main() int x,y,a=0,b=0; scanf(“%d,%d”,&x,&y); /輸入:1,0 switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; printf(“na=%d,b=%d”,a,b); 運行結(jié)果:a=2,b=1Switch的嵌套:作業(yè):編寫程序,用getchar()函數(shù)讀入兩個字符給c1、c2,然后分別用putchar()函數(shù)和printf()函數(shù)輸出這兩個字符。編
20、寫程序,輸入一個4位10進制數(shù)(各位數(shù)字中沒有0),并把它各位按相反的順序組成一個新的數(shù)字,并輸出。(如輸入1234,輸出4321)有一函數(shù) x (x1) y= 2x-1 (1=x=10) 寫一程序,輸入x,輸出y。4. 編寫程序,讀入一個百分制成績(如85),輸出為成績等級A,B,C,D,E。 其中90分以上為A,8090分為B, 7079分為C, 6069分為D,60分以下為E 。5. 輸入一個年份,判斷是否為閏年.6. 輸入三個整數(shù)x,y,z,請把這三個數(shù)由小到大輸出。作業(yè)(續(xù)):7.以下程序片段能否通過編譯?能通過的代碼,執(zhí)行后的結(jié)果是什么?(1)int a=1,b=1,c=1;if
21、(a0)if (a2) b+=1; else c+=1;printf(”%d,%d,%d”,a,b,c);(2)int a=1,b=1,c=1;if (a0) if (a2) b+=1; else c+=1;printf(”%d,%d,%d”,a,b,c);作業(yè)(續(xù)):7.以下程序片段能否通過編譯?能通過的代碼,執(zhí)行后的結(jié)果是什么?(3)int a=1,b=1,c=1;if (a0)if (a2) b+=1; else c+=1;printf(”%d,%d,%d”,a,b,c);(4)int a=1,b=1,c=1;if (a0)if (a2) b+=1; else c+=1;else a+=1;prin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 導游資格-導游資格證每日一練
- 貧困生申請書認定
- 重開業(yè)申請書
- 企業(yè)內(nèi)部系統(tǒng)使用權(quán)限規(guī)范
- 2024-2025學年山東省百師聯(lián)考高二上學期期中考試物理試題(解析版)
- 電動車驅(qū)動系統(tǒng)技術(shù)專利研究
- 初中學生申請書
- 校園國旗護衛(wèi)隊申請書
- 外研版高中英語選擇性必修第四冊UNIT5 Period1課件
- 2025年中國銅畫市場調(diào)查研究報告
- 山西省太原市2024-2025學年九年級上學期期末歷史試題(含答案)
- 2024年全國體育專業(yè)單獨招生考試數(shù)學試卷試題真題(含答案)
- 2025屆高三八省聯(lián)考語文試卷分析 課件
- 2025年江蘇連云港灌云縣招聘“鄉(xiāng)村振興專干”16人高頻重點提升(共500題)附帶答案詳解
- 教務主任在教務管理經(jīng)驗大會上發(fā)言稿
- 2025年度檢修計劃
- 2024-2025學年冀教版數(shù)學五年級上冊期末測試卷(含答案)
- 商業(yè)綜合體市場調(diào)研報告
- 自動體外除顫器
- 《微生物學發(fā)展史》課件
評論
0/150
提交評論