




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三部分C語言的結構語句
第4章選擇結構4.1if語句4.1.1單分支if語句它的一般格式如下:
if(表達式)語句;說明:對條件表達式進行判斷,若其值為“真(非0)”時執(zhí)行語句,若其值為“假(0)”時則跳過語句。其執(zhí)行過程見流程圖4.1。例如:設定學生成績60分為及格分數線,用單分支if語句描述為:
if(grade>=60)
printf(“passed\n”);又如:x大于y就輸出x,用單分支if語句描述為:
if(x>y)
printf(“%d”,x);4.1.2雙分支if語句它的一般格式如下:if(表達式)語句1;else語句2;說明:與單分支if語句不同的是在條件為“真(非0)”或“假(0)”時執(zhí)行指定的不同的操作。對條件表達式進行判斷,若其值為“真(非0)”時,就執(zhí)行語句1;若其值為“假(0)”時,就執(zhí)行語句2。其執(zhí)行過程見流程圖4.2。例如:給學生成績劃分:成績大于或等于60分時輸出“passed”,成績小于60分時輸出“failed”。用雙分支if語句描述為:
if(grade>=60)
printf(“passed\n”);else
printf(“failed\n”);在前面的章節(jié)還提到過與if/else結構密切相關的條件運算符?:,它是C語言中唯一的三目運算符(即有三個操作數)。對上面的兩例用條件運算符改寫為:
grade>=60?printf(“passed\n”):printf(“failed\n”);x>y?printf(“%d”,x):printf(“%d”,y);由此說明適當的語句修改條件運算符可以完成if/else結構相同的功能。說明:1.對于單分支和雙分支if后面的“表達式”,一般為邏輯表達式或關系表達式,事實上表達式的類型不限于此,可以是任意的數值類型(包括整型、實型、字符型、指針型數據)。只要表達式的值為非0,就認為它為真;只要表達式的值為0,就認為它為假。例如:if(6)printf(“passed\n”);if(‘A’)printf(“%d”,‘A’);
這些都是合法的if語句。2.對于雙分支if語句,else子句不能作為語句單獨使用,它必須是if語句的一部分,與if配對使用。3.if語句后面的表達式之后不能增加分號,同時注意語句后面的分號不能遺漏。4.在if和else后面可以只包括一個內嵌的操作語句,也可以包括多個操作語句,此時務必用“{}”將幾個語句括起來成為一個復合語句。例如:if(x>100){x--;s=+x;}else{x++;s=+x;}此時又要注意:在“{}”后面不能再添加分號,因為“{}”內是一個完整的復合語句,不需要再添加分號。4.1.3多分支if語句對于解決判斷多個條件的問題,可以使用if語句的嵌套,即在if語句中又包括一個或多個if語句。它的一般格式如下:if(表達式1)
語句1;elseif(表達式2)語句2;elseif(表達式3)
語句3;┆elseif(表達式m)
語句m;else
語句n;說明:開始執(zhí)行該結構后,便依次去對多個條件進行判斷測試,符合某一條件,則轉去執(zhí)行該條件下的操作,其它部分將被跳過;如果無一條件為“真(非0)”,就執(zhí)行最后一個else所指定的操作,這個else可以看作“其它情形”。應當特別注意if與else的匹配關系:規(guī)則是從最內層開始,else總是與它上面最近的(未曾配對的)if配對。其執(zhí)行過程見流程圖4.3?!纠?-1】編程實現給一百分制成績,要求輸出成績等級‘A’、‘B’、‘C’、‘D’、‘E’。90分以上為‘A’等,89~80分為‘B’等,79~70分為‘C’等,69~60分為‘D’等,60分以下為‘E’等?!驹闯绦颉縨ain(){intgrade;printf("inputthegrade:");scanf("%d",&grade);if(grade>=90)printf("A\n");elseif(grade>=80)printf("B\n");elseif(grade>=70)printf("C\n");elseif(grade>=60)printf("D\n");elseprintf("E\n");}4.2switch語句
4.2.1switch語句對于解決實際生活中例如人口統(tǒng)計分類、工資統(tǒng)計分類、銀行存款分類等等的多分支選擇問題,采用多分支if語句(即if語句的嵌套)來處理固然可以,但是如果分支較多,則嵌套的if語句層數多,程序冗長而且會導致可讀性降低。C語言提供了直接處理多分支選擇的switch語句,它的一般格式如下:switch(表達式){case常量表達式1:語句1;case常量表達式2:語句2;┆case常量表達式n:語句n;
default:語句m;}說明:其執(zhí)行過程為進入switch結構后,根據表達式的值從上到下去找與其相匹配的case,以此作為入口,執(zhí)行其后面的各語句。對【例4-1】用switch語句改寫如下:【源程序】main(){intgrade;printf("inputthegrade:");scanf("%d",&grade);switch(grade/10){case10:case9:printf("A\n");case8:printf("B\n");case7:printf("C\n");case6:printf("D\n");default:printf("E\n");}}【運行結果】inputthegrade:98ABCDE說明:此時的結果并不是我們所希望得到的,也就是說根據switch后面表達式的值找到了相匹配的case分支后,就以此為入口執(zhí)行后面的所有語句,而不再進行判斷了。其流程圖如圖4.5。4.2.2break語句在switch結構中的運用為了正確使用switch結構從多種結果中選擇一種結果的功能,我們可以運用前面學過的break語句來達到此目的。對流程圖4.5修改如下如圖4.6:【源程序】main(){intgrade;printf("inputthegrade:");scanf("%d",&grade);switch(grade/10){case10:case9:printf("A\n");break;case8:printf("B\n");break;case7:printf("C\n");break;case6:printf("D\n");break;default:printf("E\n");break;}}說明:1.switch結構的執(zhí)行部分是一個由一些case子句和一個可缺省的default子句組成的復合語句,特別注意要用一對“{}”括起來。2.switch后面的表達式一般是整型表達式或字符型表達式,與之相對應的case后面的常量表達式也應是一個整型表達式或字符型表達式,但要注意case與常量表達式之間要有空格。例如:case6+9:printf(“ok”);是合法的。3.在執(zhí)行switch語句時,根據其后表達式的值找相匹配的case子句,要注意“case常量表達式”只是起語句標號的作用,并不是在該處進行條件判斷。當找到相匹配的case子句即入口標號時,就從此標號開始執(zhí)行后面的語句。因此,應該在執(zhí)行一個case子句后必須增加一條間斷語句break來使流程跳出switch結構。如果未找到相匹配的case子句就執(zhí)行default子句,若default子句放在最后其后可以不加break語句。4.各個case子句出現的次序對執(zhí)行結果沒任何影響,即順序可以任意布局。5.每一個case能夠擁有一條或多條語句,其最大的不同之處在于使用多條語句時不需要用“{}”括起來。6.多個case可以共用一組執(zhí)行語句。例如:┆
case‘A’:case‘a’:++count;break;┆成績?yōu)榇髮懽帜窤或小寫字母a都進行累加求和。7.switch結構中的case子句中的常量表達式的值不允許相同。8.switch結構允許嵌套。4.3實例解析【例4-2】從鍵盤輸入三個整數a、b、c,輸出最大的一個?!揪幊趟悸贰糠治觯嚎梢韵日页鯽與b之間的較大者,然后再將這個較大者與c比較找出較大者,則此數即為三個數中的最大數?!驹闯绦颉拷夥?:main(){int
a,b,c;printf("input
a,b,c:");scanf("%d,%d,%d",&a,&b,&c);printf("themaxis:%d\n",c>((a>b)?a:b)?c:((a>b)?a:b));}解法2:main(){
int
a,b,c,max;
printf("input
a,b,c:");
scanf("%d,%d,%d",&a,&b,&c);
if(a>b)
if(a>c)max=a;elsemax=c;else
if(b>c)max=b;elsemax=c;
printf("themax
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023-2029年中國竹節(jié)蝦行業(yè)市場深度分析及未來發(fā)展趨勢預測報告
- 2025年中國MEMS壓力傳感器行業(yè)市場調查研究及發(fā)展戰(zhàn)略研究報告
- 中國威靈仙湯行業(yè)市場前景預測及投資價值評估分析報告
- 年中國精密TRB軸承市場評估研究報告
- 中國工程監(jiān)理市場供需預測及投資戰(zhàn)略研究咨詢報告
- 2025-2030年女式西服行業(yè)市場調研及前景趨勢預測報告
- 應急基礎知識(安全培訓)
- 防火防震安全知識
- 2025屆上海市華東師范大學附屬第二中學化學高二下期末學業(yè)水平測試模擬試題含解析
- 碰撞車輛肇事逃逸怎么處罰
- 《產科危急重癥早期識別中國專家共識(2024年版)》解讀課件
- 2025至2030中國礦用卡車行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 氟骨癥課件教學課件
- 腳手架知識試題集及答案
- 宣城宣州區(qū)“政聘企培”人才引進筆試真題2024
- 診后疾病管理行業(yè)體系構建
- 成都東方廣益投資有限公司下屬企業(yè)招聘筆試真題2024
- 中國鄉(xiāng)村建設運動課件
- 2025至2030年中國高純氮化硅行業(yè)市場全景評估及發(fā)展策略分析報告
- 2024年四川省高校畢業(yè)生“三支一扶”計劃真題
- 2025年農作物種植與管理專業(yè)考試試題及答案
評論
0/150
提交評論