C語言選擇結構_第1頁
C語言選擇結構_第2頁
C語言選擇結構_第3頁
C語言選擇結構_第4頁
C語言選擇結構_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 第三部分第三部分 C語言的結構語句語言的結構語句 第第4章章 選擇結構選擇結構問題的提出:百分制成績的等級劃分問題編程實現:給出一百分制成績,要求輸出成績等級A、B、C、D、E。90分以上為A等,8980分為B等,7970分為C等,6960分為D等,60分以下為E等。假定成績為整型數據。這顯然是一個必須用選擇語句才能解決的問題。本章將圍繞此問題不斷地嘗試不同的解法。4.1 if語句(條件選擇語句)vif語句的三種形式l形式一:單分支u格式:if (expression) statementu執行過程:exprstatement非0=0例:if (xy) printf(“%d”,x);expr

2、statement1statement2非0=0l形式二:雙分支u格式:if (expression) statement1 else statement2u執行過程:例:if (xy) max=x; else max=y;l形式三:多分支u格式:if ( expr1 ) statement1else if (expr2 ) statement2else if (expr3 ) statement3. else statementn expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0u執行過程: 例:if (salar

3、y1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0; 如:if(a=b&x=y) printf(“a=b,x=y”); if(3) printf(“OK”); if(a) printf(“%d”,a);l說明:uif后面的表達式類型任意(關鍵:非0為真)u語句可以是復合語句u if(x) if(x!=0) if(!x) if(x=0)例 考慮下面程序的輸出結果: #include main()

4、 int x,y; scanf(“%d,%d”,&x,&y); if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y);Compile Error!if后只能管后只能管一條語句一條語句/*ch4_1.c*/#include main() int x,y; printf(Enter an integer:); scanf(%d,&x); y=x; if(yabsolute value:%dn,x,y);例 求一個數的絕對值運行:Enter an integer:-12 integer:-12-absolute value :1

5、2/*ch4_2.c*/#include main() int a,b; printf(Enter integer a:); scanf(%d,&a); printf(Enter integer b:); scanf(%d,&b); if(a=b) printf(a=bn); else printf(a!=bn);例 輸入兩個數并判斷兩數相等否運行:Enter integer a:12 Enter integer b:12 a=b 運行:Enter integer a:12 Enter integer b:9 a!=b main() int score; scanf(%d,&a

6、mp;score); if (score=60&score=70& score=80& score=90) printf(“grade=A”);【例】百分制成績的等級劃分問題之解法1:僅用if單分支語句實現vif語句嵌套:l一般形式:if (expr1) if (expr2) statement1 else statement2else if(expr3) statement3 else statement4內嵌if內嵌ifif (expr1) if (expr2) statement1 else statement2內嵌ifif (expr1) if (expr2)

7、statement1else statement3 內嵌ifif (expr1) statement1else if(expr3) statement3 else statement4內嵌if例 輸入兩數并判斷其大小關系/*ch4_4.c*/#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 Ent

8、er integer x,y:12,12 X=Ylif else 配對原則:缺省 時,else總是和它上面離它最近的未配對的if配對if()if()if()else.else.else.例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);實現if else 正確配對方法:加 例 考慮下面程序輸出結果: main() int x=100,a=10,b=20; int v1=5,v2=0; if(a=90) printf(

9、An); else if(grade=80) printf(Bn); else if(grade=70) printf(Cn); else if(grade=60) printf(Dn); else printf(En);4.2 switch語句(開關分支語句)v一般形式:switch( 表達式) case E1: 語句組 1; break; case E2: 語句組 2; break; . case En: 語句組 n; break; default: 語句組 ; break; v執行過程:switch表達式語句組1語句組2語句組n語句組.E 1E 2Endefaultcase v說明:lE

10、1,E2,En是常量(整型/字符型)表達式,且值必須互不相同,不能表示范圍,如x0 l語句標號作用,必須用break跳出lcase后可包含多個可執行語句,且不必加 lswitch可嵌套l多個case可共用一組執行語句如: case A: case B: case C: printf(“score60n”); break; .例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf

11、(“data error!”); 運行結果:score為5時,輸出: Very good! Good! Pass! Fail! data error!如果score分別為3,2,1呢? void main() int x=1,y=0,a=0,b=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); 運行結果:a=2,b=1【例】根據程序寫出運行結果/*ch4_5.c*/#include

12、main() int c; printf(Enter m or n or h or other:); c=getchar(); switch(c) case m: printf(nGood morning!n);break; case n: printf(nGood night!n); break; case h: printf(nHello!n); break; default : printf(n?n); break; 例 根據輸入字母輸出字符串main( ) int grade; printf(input the grade:); scanf(%d,&grade); switch

13、(grade/10) case 10: case 9: printf(An);break; case 8: printf(Bn);break; case 7: printf(Cn);break; case 6: printf(Dn);break; default : printf(En);break; 【例】百分制成績的等級劃分問題之解法3:【例】從鍵盤輸入三個整數a、b、c,輸出最大的一個。main( ) int a,b,c,max; printf(input a,b,c:); scanf(%d,%d,%d,&a,&b,&c); if(ab) if(ac) max=a

14、; else max=c; else if(bc) max=b; else max=c; printf(the max is :%d n,max);【例】根據程序寫出運行結果答案:答案:2答案:答案:13main ( ) int x=2,y=-1,z=2; if(xy) if(y0) z=0; else z+=1; printf(“%dn“,z);main ( ) int i=10; switch(i) case 9:i+=1; case 10:i+=1; case 11:i+=1; default:i+=1; printf(%dn,i);【例】根據輸入的年份和月份,計算該月有多少天?(考慮閏

15、年和平年的情況)main() int year,month,day; printf(“input the year and month:”); scanf(“%d,%d”,&year,&month); switch(month) case 4: case 6: case 9: case 11: day=30;break; case 2: if (year%4=0&year%100!=0|year%400=0) day=29; else day=28; break; default:day=31;break; printf(“The month is %d dayn”,day);【例】判斷一個輸入的3位數是否為水仙花數main()int a,a1,a2,a3;printf(請輸入一個請輸入一個3位數的整數:位數的整數:);scanf(%d,&a);a1=a%10;a2=a/10%10;a3=a/100%10;if(a1*a1*a1+a2*a2*a2+a3*a3*a3=a)printf(%d是水仙花數!是水仙花數!,a);elseprintf(%d不是水仙花數!不是水仙花數!,a);4

溫馨提示

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

評論

0/150

提交評論