版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
C語言程序設計
目
錄目錄CONTENTS
關系運算符和關系表達式4.1
邏輯運算符和邏輯表達式4.2
if語句的基本形式4.3
嵌套的if語句4.4
條件運算符和條件表達式4.5
switch語句4.6在C語言中,條件運算符(?:)是唯一的三目運算符(需要三個操作數(shù)),它可以簡化某些if-else語句的邏輯,形成條件表達式。其核心作用是根據(jù)一個條件的真/假,從兩個表達式中選擇一個執(zhí)行:條件表達式?表達式1:表達式2;條件表達式的執(zhí)行過程是:若條件表達式為真,則條件表達式的值等于表達式1的值,否則等于表達式2的值。例如:c=a>b?a:b;若a大于b,則條件表達式的值為a,賦值給c;否則,條件表達式的值為b,賦值給c,即求a和b兩個數(shù)中較大的數(shù)。等價于:if(a>b) c=a;else c=b;
4.5條件運算符和條件表達式條件運算符的結合性為從右到左,當有條件運算符嵌套時,按照從右到左的順序依次運算。例如,當a等于1,b等于2時,條件表達式:a<b?(c=3):a>b?(c=4):(c=5)該表達式的值為3,變量c的值也為3。首先計算表達式a>b?(c=4):(c=5),因為a>b為假,所以這一條件表達式的結果為5,此時c=5;接著計算a<b?(c=3):5,因為a<b為真,所以這一條件表達式的結果為3,此時c=3。2條件表達式中表達式1一般是關系表達式,表達式2和表達式3不僅可以是數(shù)值表達式,還可以是賦值表達式或函數(shù)表達式。例如:a>b?printf("%d",a):printf("%d",b)3條件運算符的優(yōu)先級低于算術運算符、關系運算符及邏輯運算符,僅高于賦值運算符和逗號運算符。1
4.5條件運算符和條件表達式在C語言中,switch語句是一種多分支控制結構,用于根據(jù)一個整型表達式(或字符型、枚舉型)的值,從多個預設分支中選擇一個執(zhí)行。它比多層if-elseif更適合“判斷一個值是否匹配多個固定選項”的場景,代碼結構更清晰。switch語句的一般形式如下:switch(表達式){case常量表達式1:[語句1];break;case常量表達式2:[語句2];break;…case常量表達式n:[語句n];break;[default:語句n+1];break;}其中,方括號括起來的內(nèi)容是可選項。
4.6switch語句switch語句的執(zhí)行過程如圖所示,首先計算switch后表達式的值,然后將其結果與case后常量表達式的值依次進行比較,若此值與某case后常量表達式的值一致,即轉去執(zhí)行該case后的語句;若沒有找到與之匹配的常量表達式,則執(zhí)行default后的語句。
4.6switch語句
提示(1)整型表達式:switch后的表達式必須是整型相關類型(如int、char、enum,float、double等非整型不允許);(2)case常量:case后的“常量”必須是字面常量(如1、'A')或#define定義的宏,不能是變量;(3)break語句:用于跳出switch語句,避免“穿透”到下一個case(若不寫break,會繼續(xù)執(zhí)行后續(xù)所有case的語句,直到遇到break或switch結束);(4)default分支:可選分支,當表達式值不匹配任何case時執(zhí)行,通常放在最后(位置不固定,但習慣放末尾)?!纠?-7】根據(jù)月份判斷季節(jié)(12/1/2為冬季,3/4/5為春季,6/7/8為夏季,9/10/11為秋季)?!締栴}分析】這是一道典型的可以利用多分支選擇語句的題目,可以定義整型變量month,使用switch語句判斷整型變量month的值,利用case語句檢驗month值的不同情況;如果month的值不是case中所檢驗列出的情況,那么利用default語句輸出“輸入的月份無效!”。
4.6switch語句【參考代碼】#include<stdio.h>intmain(){intmonth;printf("請輸入月份(1-12):");scanf("%d",&month);switch(month){case12://12月case1://1月(無break,穿透到2月的邏輯)case2://2月(三個月份共用同一邏輯)printf("冬季\n");break;case3://3月case4://4月(穿透)case5://5月printf("春季\n");break;
4.6switch語句
case6://6月case7://7月(穿透)case8://8月printf("夏季\n");break;case9://9月case10://10月(穿透)case11://11月printf("秋季\n");break;default:printf("輸入的月份無效!\n");break;}return0;}
4.6switch語句【運行結果】程序運行結果如圖所示,當輸入1~12之間的月份時,輸出相應的季節(jié),否則輸出錯誤提示語。【程序說明】在每個case或default語句后都有一個break關鍵字,用于跳出switch結構。
4.6switch語句
名師點睛(1)case常量不能重復:同一個switch中,多個case的常量值必須唯一,否則編譯報錯。錯誤示例:switch(x){case1:...;break;case1:...;break;//錯誤:case常量重復}(2)表達式必須是整型:若用非整型(如float),編譯會報錯。錯誤示例:floatscore=85.5;switch(score){...}//錯誤:表達式為float類型(3)default的位置不固定:default可放在任意case之間,但建議放在最后,且必須加break(否則會穿透到后續(xù)case);(4)避免過度依賴穿透:除“多值共用邏輯”外,盡量為每個case加break,否則易導致邏輯混亂(尤其是代碼維護時)。
4.6switch語句【例4-8】使用switch語句實現(xiàn)兩個數(shù)簡單的加減乘除計算?!締栴}分析】接收用戶輸入的整數(shù)表達式(如10+5),解析出兩個操作數(shù)和運算符,執(zhí)行對應的加減乘除運算并輸出結果,我們開始定義三個變量,兩個整型變量a、b用來儲存將要進行計算的整數(shù),一個字符型變量op用來儲存運算符。
4.6switch語句【參考代碼】#include<stdio.h>intmain(){inta,b;charop;//運算符(+、-、*、/)printf("請輸入表達式(格式:aopb,如10+5):");scanf("%d%c%d",&a,&op,&b);switch(op){case'+':printf("%d+%d=%d\n",a,b,a+b);break;case'-':printf("%d-%d=%d\n",a,b,a-b);break;case'*':printf("%d*%d=%d\n",a,b,a*b);break;
4.6switch語句case'/'://額外判斷除數(shù)是否為0if(b==0){printf("錯誤:除數(shù)不能為0\n");}else{printf("%d/%d=%d\n",a,b,a/b);}break;default:printf("錯誤:不支持的運算符(僅支持+-*/)\n");break;}return0;}
4.6switch語句【運行結果】【程序說明】該程序是一個基于switch語句實現(xiàn)的簡易整數(shù)計算器,核心功能是接收用戶輸入的整數(shù)表達式(如10+5),解析兩個整數(shù)操作數(shù)和運算符后,執(zhí)行加減乘除運算并輸出結果,同時包含異常情況處理。首先通過inta,b定義存儲兩個整數(shù)操作數(shù)的變量,charop定義存儲運算符(+、-、*、/)的變量;然后通過printf提示輸入格式(如10+5),再用scanf("%d%c%d",&a,&op,&b)讀取輸入的兩個整數(shù)和運算符,確保輸入數(shù)據(jù)與變量類型匹配;再通過switch(op)對運算符進行多分支判斷——當op為'+'時,執(zhí)行加法運算a+b并輸出結果;當op為'-'時,執(zhí)行減法運算a-b并輸出結果;當op為'*'時,執(zhí)行乘法運算a*b并輸出結果;當op為
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026福建廈門市集美區(qū)濱海幼兒園非在編教職工招聘3人筆試參考題庫及答案解析
- 2026中煤特鑿公司中層管理人員內(nèi)部競聘3人筆試備考題庫及答案解析
- 2026廣西欽州市人力資源和社會保障局招聘公益性崗位人員2人筆試模擬試題及答案解析
- 2026河南商丘梁園區(qū)消防救援大隊招聘10人筆試參考題庫及答案解析
- 2026國新新格局(北京)私募證券基金管理有限公司相關崗位招聘1人筆試參考題庫及答案解析
- 2026嘉興市世紀交通工程咨詢監(jiān)理有限公司招聘22人筆試備考題庫及答案解析
- 2026湖北利航交通開發(fā)有限公司本部職能部門普通管理崗競聘上崗15人筆試備考題庫及答案解析
- 2026年??诮?jīng)濟學院單招綜合素質(zhì)考試備考試題帶答案解析
- 2025年中職第一學年(作物生產(chǎn)技術)玉米種植技術試題及答案
- 2025年中職第一學年(美發(fā)與形象設計)發(fā)型修剪工藝階段測試題及答案
- 2025年統(tǒng)編版語文三年級上冊第七、八單元模擬測試卷
- 2026年江蘇鹽城高中政治學業(yè)水平合格考試卷試題(含答案詳解)
- 主動脈瓣置換術指南
- 裝配式裝修管線分離培訓課件
- 2025年陜西公務員《申論(C卷)》試題含答案
- 管理體系不符合項整改培訓試題及答案
- 消防鑒定考試承諾書(初-中-高級模板)
- 醫(yī)院住院部建筑投標方案技術標
- 偏癱康復的科普小知識
- 2025年(AIGC技術)生成式AI應用試題及答案
- 肺癌全程管理課件
評論
0/150
提交評論