




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 八年級地理上冊 第四章 中國的經濟發展 第一節 交通運輸 第2課時 我國鐵路干線的分布教學設計 (新版)新人教版
- 3學會自我保護 (公開課一等獎創新教學設計)統編版道德與法治七年級下冊
- 2創新永無止境 公開課一等獎創新教學設計(表格式)-1
- UTF-8‘’Brand KPIs for ready-made-food Aunt Bessie's in the United Kingdom-外文版培訓課件(2025.2)
- 微量泵使用與護理
- 案例分析1人感染高致病性禽流感疫情52
- 收藏品質押借款合同
- 倉庫租賃買賣合同樣本
- 軟件開發合同技術創新目標
- 《探求知識的互聯互通》課件
- 2024年韶關市始興縣事業單位招聘工作人員筆試真題
- 安徽省皖南八校2024-2025學年高一下學期4月期中考試數學試題
- 國家發展改革委低空經濟司
- 單位體檢協議書模板合同
- 委托律師簽署協議書
- 圖文工廠轉讓協議書
- 貨物貿易的居間合同
- 2025-2030中國療養院行業市場深度分析及前景趨勢與投資研究報告
- 2025年國企山東濟南公共交通集團有限公司招聘筆試參考題庫附帶答案詳解
- 【MOOC】大學體育(二)-華中科技大學 中國大學慕課MOOC答案
- 機油化學品安全技術(MSDS)說明書
評論
0/150
提交評論