版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計(jì)選擇結(jié)構(gòu)程序設(shè)計(jì)第4章掌握if語句的三種形式1掌握if語句嵌套的運(yùn)用2掌握switch語句的用法及break語句的合理運(yùn)用3能熟練進(jìn)行選擇結(jié)構(gòu)的程序設(shè)計(jì)4學(xué)習(xí)目標(biāo)3.1C語言語句4.1if語句的常用格式選擇結(jié)構(gòu)是需要通過條件語句(通常稱為if語句)來完成的。條件語句有多種形式:單分支、雙分支和多分支等。它根據(jù)給定的條件進(jìn)行判斷,以決定是否執(zhí)行某個(gè)分支程序段。(1)第一種為單分支選擇語句,其一般形式為if(表達(dá)式)語句執(zhí)行過程:括號(hào)內(nèi)的表達(dá)式是條件表達(dá)式。若表達(dá)式的值為“真”,則執(zhí)行()后面的語句;若表達(dá)式的值為“假”,則不執(zhí)行任何語句?!纠?-1】從鍵盤輸入變量n的值,若n≥60則輸出“合格”,否則不輸出。程序代碼:#include<stdio.h>voidmain(){intn;scanf("%d",&n);if(n>=60)printf("合格\n");}運(yùn)行過程及結(jié)果:①鍵盤輸入:60↙輸出顯示:“合格”;②鍵盤輸入:59↙輸出顯示:無任何顯示。3.1C語言語句4.1if語句的常用格式(2)第二種為雙分支選擇語句,其一般形式為if(表達(dá)式)語句1else語句2執(zhí)行過程:若表達(dá)式的值為“真”,則執(zhí)行語句1;若表達(dá)式的值為“假”,則執(zhí)行語句2?!纠?-2】
用if-else語句編寫一個(gè)程序,判斷兩數(shù)是否相等。程序代碼:#include<stdio.h>voidmain(){inta,b;scanf(“%d%d”,&a,&b);if(a==b)printf("%d與%d相等",a,b);elseprintf("%d與%d不相等",a,b);}運(yùn)行結(jié)果:2與3不相等3.1C語言語句4.1if語句的常用格式(3)第三種為多分支選擇語句,當(dāng)有多個(gè)分支選擇時(shí),可采用if-else-if語句,其一般形式為if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2…elseif(表達(dá)式n-1)語句n-1else語句n執(zhí)行過程:若表達(dá)式1的值為“真”,則執(zhí)行語句1;若表達(dá)式1的值為“假”,則判斷表達(dá)式2。若表達(dá)式2的值為“真”,則執(zhí)行語句2;若表達(dá)式2的值為“假”,則判斷表達(dá)式3。依此類推,若表達(dá)式n-1的值為“真”,則執(zhí)行語句n-1,若表達(dá)式n-1的值為“假”,則執(zhí)行語句n?!纠?-3】編寫程序,根據(jù)學(xué)生成績劃分等級(jí)為優(yōu)、良、中、及格、不及格,分別用5、4、3、2、1來表示成績等級(jí),且按如下規(guī)定劃分它們,即:分?jǐn)?shù)
等級(jí)90~100A80~89B70~79C60~69D0~59E#include<stdio.h>voidmain(){intscore;chargrade;scanf("%d",&score);if(score>=90)grade='A';elseif(score>=80)grade='B';elseif(score>=70)grade='C';elseif(score>=60)grade='D';elsegrade='E';printf("%c\n",grade);}3.1C語言語句4.2if語句的嵌套格式在C語言中,如果一個(gè)if語句完全包含另一個(gè)if語句或多個(gè)if語句,即成為if語句的嵌套。嵌套的形式不唯一,可嵌套if語句三種形式中的任意一種,其一般形式為if(表達(dá)式1)if(表達(dá)式2)語句1else語句2elseif(表達(dá)式3)語句3else語句4在C語言中,else不能單獨(dú)出現(xiàn),為避免歧義,C語言規(guī)定,else總是與其上面最近且未配對的if語句進(jìn)行配對。【例4-4】
用if語句嵌套方法,判斷兩個(gè)數(shù)的關(guān)系(大于、小于、等于)并輸出。#include<stdio.h>voidmain(){intm,n;scanf("%d,%d",&m,&n);if(m!=n)if(m>n)printf("m>n\n");elseprintf("m<n\n");elseprintf("m=n\n");}3.1C語言語句4.2if語句的嵌套格式通過例4-4我們可以看到,嵌套結(jié)構(gòu)實(shí)質(zhì)上也是進(jìn)行了多分支選擇。例4-4中有3個(gè)分支,分別為m>n、m<n和m=n。此類問題用多分支語句(if-else-if)也可以完成,而且程序更加清晰。在一般情況下,較少使用if語句的嵌套結(jié)構(gòu),因?yàn)閺?fù)雜的嵌套會(huì)降低程序的可讀性和理解性。【例4-5】用多分支語句完成“例4-4”的要求。編寫程序,根據(jù)學(xué)生成績劃分等級(jí)為優(yōu)、良、中、及格、不及格,分別用5、4、3、2、1來表示成績等級(jí),且按如下規(guī)定劃分它們,即:分?jǐn)?shù)
等級(jí)90~100A80~89B70~79C60~69D0~59E#include<stdio.h>voidmain(){intm,n;scanf("%d,%d",&m,&n);if(m==n)printf("m=n\n");elseif(m>n)printf("m>n\n");elseprintf("m<n\n");}運(yùn)行過程及結(jié)果:①鍵盤輸入:59↙輸出顯示:E。②鍵盤輸入:99↙輸出顯示:A3.1C語言語句4.3條件表達(dá)式構(gòu)成的選擇結(jié)構(gòu)條件運(yùn)算符三目運(yùn)算符,由“?”和“:”共同組成,條件運(yùn)算符將3個(gè)操作對象連接,形成條件表達(dá)式。條件表達(dá)式的一般形式如下:表達(dá)式1?表達(dá)式2:表達(dá)式3它的執(zhí)行過程是:先求解表達(dá)式1,若表達(dá)式1為真,則取表達(dá)式2的值為該條件表達(dá)式的值,否則取表達(dá)式3的值為該條件表達(dá)式的值。有些if語句可以用簡單的條件運(yùn)算符來代替?!纠?-6】
輸入一個(gè)字母,若輸入的是大寫字母,則轉(zhuǎn)換成小寫字母輸出;若輸入的是小寫字母,則轉(zhuǎn)換成大寫字母輸出。#include<stdio.h>voidmain(){charch;printf("請輸入一個(gè)大寫或小寫字母:");scanf("%c",&ch);ch=(ch>='A'&&ch<='Z'?(ch+32):(ch-32));printf("%c\n",ch);}運(yùn)行過程及結(jié)果:鍵盤輸入A輸出顯示:a鍵盤輸入b輸出顯示:B。4.4switch語句解決多種選擇問題時(shí),除了使用if語句外,還可以使用switch語句。switch語句也稱為開關(guān)語句,它是一種多分支結(jié)構(gòu)語句。其一般形式為:switch(條件表達(dá)式){case常量表達(dá)式1:語句1;case常量表達(dá)式2:語句2;…case常量表達(dá)式n:語句n;default:語句n+1;}執(zhí)行過程:計(jì)算表達(dá)式的值,并逐個(gè)與其后的常量表達(dá)式相比較,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),執(zhí)行其后的語句,然后不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有case后的語句。如果沒有一個(gè)case后面的“常量表達(dá)式”的值與“表達(dá)式”的值相匹配,則執(zhí)行default后面的語句,當(dāng)default部分省略時(shí),則什么也不執(zhí)行就跳出switch語句。然后,再執(zhí)行switch語句的下一條。4.4switch語句【例4-7】運(yùn)行以下程序,分析運(yùn)行結(jié)果。#include<stdio.h>void
main(){inti=2;switch(i){case1:printf("caseisin1\n");case2:printf("caseisin2\n");case3:printf("caseisin3\n");default:printf("itisdefault\n");}}運(yùn)行結(jié)果:caseisin2caseisin3itisdefault【例4-8】break
語句的作用。程序代碼:#include<stdio.h>voidmain(){inti=2;switch(i){case1:printf("caseisin1\n");break;case2:printf("caseAisin2\n");
break;case3:printf("caseisin3\n");
break;default:printf("itisdefault\n");}}運(yùn)行結(jié)果:caseisin2運(yùn)行過程及結(jié)果:鍵盤輸入A輸出顯示:a鍵盤輸入b輸出顯示:B。4.4switch語句01switch后面的“表達(dá)式”,可以是int、char和枚舉型中的一種。03每個(gè)case后面“常量表達(dá)式”的值必須各不相同,否則會(huì)出現(xiàn)相互矛盾的現(xiàn)象(即對表達(dá)式的同一值,有兩種或兩種以上的執(zhí)行方案)。05各case及default子句的先后次序,不影響程序的執(zhí)行結(jié)果。02當(dāng)表達(dá)式的值與某個(gè)case后面的常量表達(dá)式的值相等時(shí),就執(zhí)行case后面的語句,若所有的case中的常量表達(dá)式的值都沒有與表達(dá)式的值相匹配,就執(zhí)行default后面的語句。04case后面的常量表達(dá)式僅起語句標(biāo)號(hào)作用,并不進(jìn)行條件判斷。系統(tǒng)一旦找到入口標(biāo)號(hào),就從此標(biāo)號(hào)開始執(zhí)行,不再進(jìn)行標(biāo)號(hào)判斷,所以一般在語句序列的末尾加上break語句,以便結(jié)束switch語句。06多個(gè)case子句,可共用同一語句(組)。4.4switch語句【例4-9】若分?jǐn)?shù)為小于100的正整數(shù),請用switch語句編寫程序分段顯示對應(yīng)值。程序代碼:#include<stdio.h>voidmain(){ inta,m; scanf("%d",&a); switch(a/10) { case9: case8: case7: case6:m=5;break; case5:m=4;break; case4:m=3;break; case3:m=2;break; default:m=1; } printf("%d",m);}【例4-10】鍵盤輸入1~8中的任一數(shù)字,查看輸出結(jié)果;若將代碼中的所有break語句刪除,再次查看輸出結(jié)果。#include<stdio.h>voidmain(){inta;printf("inputintegernumber:");scanf("%d",&a);switch(a){case1:printf("Monday\n");break;case2:printf("Tuesday\n");break;case3:printf("Wednesday\n");break;case4:printf("Thursday\n");break;case5:printf("Friday\n");break;case6:printf("Saturday\n");break;case7:printf("Sunday\n");break;default:printf("error\n");}}分?jǐn)?shù)段對應(yīng)值60~99550~59440~49330~3920~2914.5程序舉例【例4-11】
從鍵盤輸入三個(gè)數(shù),由大到小進(jìn)行輸出。#include<stdio.h>voidmain(){ inta,b,c,t; scanf("%d,%d,%d",&a,&b,&c); if(a<b){t=a;a=b;b=t;} if(a<c){t=a;a=c;c=t;} if(b<c){t=b;b=c;c=t;} printf("%d,%d,%d",a,b,c);}運(yùn)行結(jié)果:鍵盤輸入:12,5,32↙輸出結(jié)果:32,12,54.5程序舉例【例4-12】
輸入一個(gè)年份,判斷是否該年是否為閏年。#include<stdio.h>voidmain(){intyear;printf("請輸入年份:");scanf("%d",&year);if(year%400==0)printf("%d是閏年。",year);elseif(year%4==0&&year%100!=0)printf("%d是閏年。",year);elseprintf("%d不是閏年。",year);}運(yùn)行結(jié)果:請輸入年份:輸入:2024↙輸出:2024是閏年。4.5程序舉例【例4-13】
某商場進(jìn)行周年活動(dòng),活動(dòng)規(guī)則為消費(fèi)1000元以上整單9.5折,消費(fèi)2000元以上整單9折,消費(fèi)4000元以上整單8.5折,消費(fèi)6000元以上整單8折,消費(fèi)9000元以上整單7.5折。編寫程序輸入消費(fèi)金額,輸出折后金額。#include<stdio.h>voidmain(){ doublem,n,f; printf("請輸入消費(fèi)金額:"); scanf("%lf",&m); switch((int)m/1000) {case0:f=1;break; case1:f=0.95;break;
case2: case3:f=0.9;break; case4: case5:f=0.85;break; case6: case7
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- ifix培訓(xùn)教程教學(xué)課件
- 科技2025研發(fā)合作合同協(xié)議
- 腸炎病人的考試題及答案
- 現(xiàn)代教育考試題及答案
- 2025-2026人教版初中九年級(jí)語文期末復(fù)習(xí)卷
- 2025-2026七年級(jí)美術(shù)期末考試卷
- 鄉(xiāng)衛(wèi)生院月例會(huì)制度
- 民宿衛(wèi)生間管理制度
- 衛(wèi)生部檢查工作制度
- 足道館衛(wèi)生管理制度
- 2026中國電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會(huì)成熟人才招聘備考題庫及答案詳解參考
- 南瑞9622型6kV變壓器差動(dòng)保護(hù)原理及現(xiàn)場校驗(yàn)實(shí)例培訓(xùn)課件
- 統(tǒng)編版(2024)七年級(jí)上冊道德與法治期末復(fù)習(xí)必背知識(shí)點(diǎn)考點(diǎn)清單
- 2026年春節(jié)放假前員工安全培訓(xùn)
- (2025版)成人肺功能檢查技術(shù)進(jìn)展及臨床應(yīng)用指南解讀課件
- 《春秋》講解課件
- 青少年抑郁障礙的護(hù)理與康復(fù)訓(xùn)練
- 農(nóng)業(yè)養(yǎng)殖認(rèn)養(yǎng)協(xié)議書
- T-CAPC 019-2025 零售藥店常見輕微病癥健康管理規(guī)范
- 康定情歌音樂鑒賞
- 2025年四川省解除(終止)勞動(dòng)合同證明書模板
評(píng)論
0/150
提交評(píng)論