




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章分支結(jié)構(gòu)程序設(shè)計(jì)
在上一章我們知道C語(yǔ)言的基本程序結(jié)構(gòu)有3種:順序結(jié)構(gòu)、分支結(jié)構(gòu)(選擇結(jié)構(gòu))、循環(huán)結(jié)構(gòu)。本章主要學(xué)習(xí)分支結(jié)構(gòu)。學(xué)習(xí)目標(biāo)理解分支結(jié)構(gòu)的應(yīng)用熟悉if語(yǔ)句的用法熟悉switch語(yǔ)句的用法本章任務(wù)
由鍵盤輸入一個(gè)0~100的整數(shù)給變量n,請(qǐng)分別用if語(yǔ)句與switch語(yǔ)句實(shí)現(xiàn)成績(jī)的大小輸出“優(yōu)秀”、“良好”、“中等”、“及格”、“不及格”。注:
90~100分(包括90分)為優(yōu)秀;
80~89分(包括80分)為良好;
70~79分(包括70分)為中等;
60~69分(包括60分)為及格;
0~60分(不包括60分)為不及格。3.1if結(jié)構(gòu)
C語(yǔ)言的if語(yǔ)句有三種基本形式。分別是:
if語(yǔ)句形式
if-else語(yǔ)句形式
if-elseif-elseif-…-else語(yǔ)句形式3.1.1
if語(yǔ)句
其語(yǔ)義是:如果表達(dá)式的值為真,則執(zhí)行if后的語(yǔ)句,否則不執(zhí)行該語(yǔ)句。其過(guò)程如圖3.1所示。if語(yǔ)句形式:if(表達(dá)式)語(yǔ)句;3.1.1
if語(yǔ)句如:main(){intm=8,n=5;if(m>n)printf("%d",m);}本題輸出結(jié)果為多少?假設(shè)初值m=5,n=8會(huì)輸出什么結(jié)果?3.1.1
if語(yǔ)句【例3.1】輸入1個(gè)數(shù)給變量n,如果n>=60輸出PASS!”。程序如下:main(){floatn=0;clrscr();printf("Pleaseinputanum:");scanf("%f",&n);if()printf("PASS!");}n>=603.1.1
if語(yǔ)句請(qǐng)同學(xué)們自行完成例3.2【例3.2】輸入1個(gè)整數(shù)請(qǐng)用if判斷是否是0~100之間,如果是0~100之間則輸出“n=XXrangesfrom0to100”。3.1.1
if語(yǔ)句【例3.3】輸入3個(gè)數(shù)x、y、z,并按從大到小的順序輸出。3.1.2
if-else語(yǔ)句
在【例3.1】中能夠?qū)崿F(xiàn)當(dāng)n的值大于等于60時(shí)輸出“PASS”
,有時(shí)需要的輸出結(jié)果不只一種,還要在n的值小于60時(shí)輸出“FAIL”,此時(shí)用剛學(xué)過(guò)的知識(shí)如何解決?有沒(méi)有更好的辦法呢?3.1.2
if-else語(yǔ)句if-else語(yǔ)句形式:if(表達(dá)式)
語(yǔ)句1;else
語(yǔ)句2;其語(yǔ)義是:如果表達(dá)式的值為真,則執(zhí)行語(yǔ)句1,否則執(zhí)行語(yǔ)句2。3.1.2
if-else語(yǔ)句其執(zhí)行過(guò)程如圖3.2所示。3.1.2
if-else語(yǔ)句如用if-else實(shí)現(xiàn)當(dāng)n的值大于等于60時(shí)輸出“PASS”
,n的值小于60時(shí)輸出“FAIL”
。main(){ floatn=0; clrscr(); printf("Pleaseinputanum:"); scanf("%f",&n); if(n>=60) printf("PASS!"); else printf("FAIL!"); }3.1.2
if-else語(yǔ)句【例3.4】輸入三角形的三個(gè)邊長(zhǎng)a、b、c,并做出能否構(gòu)成三角形的判斷,如能請(qǐng)輸出此三角形的面積否則輸出“Inputerror!”。三角形面積公式:已知三角形三邊a,b,c,則s=(a+b+c)/2,area=【例3.4】#include"math.h"main(){floata,b,c;floatarea,s;clrscr();printf("Inputa,b,c:");scanf("%f%f%f",&a,&b,&c);if(/**//**/) {
/**//**/
}else printf("Inputerror!");}3.1.2
if-else語(yǔ)句【例3.5】判斷某一年是否為閏年。是則輸出“isbissextile”,否則輸出“isnotbissextile”。判斷閏年的條件:能被4整除,但不能被100整除或能被400整除【例3.5】main(){ intyear; clrscr(); printf("pleaseinputyear:"); scanf("%d",&year); if(/**//**/
)/*判斷是否閏年*/printf("%disbissextile.",year);elseprintf("%disnotbissextile.",year);}3.1.3
if語(yǔ)句的嵌套if語(yǔ)句的嵌套是指在if或else分支的語(yǔ)句中又包含if語(yǔ)句或if-else語(yǔ)句。分析如下函數(shù):3.1.3
if語(yǔ)句的嵌套方法1:if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;方法2:if(x>0)y=1;elseif(x==0)y=0;elsey=-1;方法3:if(x<0)y=-1;elseif(x==0)y=0;elsey=1;用以下三種方法實(shí)現(xiàn)上面的函數(shù):3.1.3
if語(yǔ)句的嵌套上面的格式3形式常用作多分支if語(yǔ)句。其通用格式如下:if(表達(dá)式1)語(yǔ)句1;elseif(表達(dá)式2)語(yǔ)句2;……elseif(表達(dá)式n)語(yǔ)句n;else語(yǔ)句n+1;語(yǔ)義是:依次判斷表達(dá)式的值,當(dāng)某個(gè)表達(dá)式值為真時(shí),則執(zhí)行其對(duì)應(yīng)的語(yǔ)句。然后跳到整個(gè)if語(yǔ)句之外繼續(xù)執(zhí)行程序。如果所有的表達(dá)式均為假,則執(zhí)行語(yǔ)句n+1。然后繼續(xù)執(zhí)行后續(xù)程序。
多分支if語(yǔ)句執(zhí)行流程3.1.3
if語(yǔ)句的嵌套【例3.6】編寫程序?qū)崿F(xiàn)輸入不小0的數(shù)x作為一名員工的一個(gè)月工資數(shù)額,求應(yīng)交稅款y并輸出。設(shè)應(yīng)交稅款的計(jì)算公式如下:3.1.3
if語(yǔ)句的嵌套main(){floatx=0,y;clrscr();printf("Inputx:");scanf("%f",&x);if(x>=0)/*由于工資不能是負(fù)數(shù),判斷x是否合法*/{
/**//**/ } else printf("Inputerror,x<0!");}3.1.3
if語(yǔ)句的嵌套試著獨(dú)立完成:【例3.7】判別鍵盤輸入字符的類別。根據(jù)輸入字符的ASCII碼來(lái)判別字符的類型。由ASCII碼表可知ASCII值小于32的為控制字符。在“0”和“9”之間的為數(shù)字,在“A”和“Z”之間為大寫字母,在“a”和“z”之間為小寫字母,其余則為其它字符。判斷輸入字符ASCII碼所在的范圍,分別給出不同的輸出。例如輸入為“g”,輸出“小寫字符”。3.1.3
if語(yǔ)句的嵌套試著用剛學(xué)的if…elseif…elseif…else完成本章的任務(wù):【例3.8】由鍵盤輸入一個(gè)0~100的整數(shù)給變量n,請(qǐng)用if語(yǔ)句實(shí)現(xiàn)據(jù)n的大小輸出“優(yōu)秀”、“良好”、“中等”、“及格”、“不及格”。注:90~100分(包括90分)為優(yōu)秀;80~89分(包括80分)為良好;70~79分(包括70分)為中等;60~69分(包括60分)為及格;0~60分(不包括60分)為不及格。3.2
switch結(jié)構(gòu)在分支比較多的程序中如果使用if嵌套實(shí)現(xiàn)會(huì)使嵌套的層數(shù)增加從而造成程序冗長(zhǎng),可讀性降低,這時(shí)最好用switch結(jié)構(gòu)來(lái)實(shí)現(xiàn)。3.2.1
switch語(yǔ)句不帶break的switch語(yǔ)句格式:switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句組1;case常量表達(dá)式2:語(yǔ)句組2;……case常量表達(dá)式n:語(yǔ)句組n; [default:語(yǔ)句組n+1;]}3.2.1
switch語(yǔ)句其語(yǔ)義是:先計(jì)算出表達(dá)式的值,如此值與哪個(gè)case后的常量表達(dá)式的值相一致,則執(zhí)行那個(gè)case后的語(yǔ)句組,及所有后續(xù)case后的語(yǔ)句組,如有default一并執(zhí)行default后的語(yǔ)句組再退出switch結(jié)構(gòu)。如計(jì)算出的表達(dá)式的值與所有case后的常量表達(dá)式的值都不一致時(shí),如有default執(zhí)行default后的語(yǔ)句組,如沒(méi)有default則直接退出switch結(jié)構(gòu)。(例題)例題#include<stdio.h>voidmain(){ intn='c'; switch(n--){ default:printf("error\n"); case'a': case'b':printf("good\n");break; case'c':printf("pass\n"); case'd':printf("warn\n");
}}3.2.1
switch語(yǔ)句【例3.9】假設(shè)1~7分別與星期一~星期日對(duì)應(yīng),請(qǐng)編寫程序?qū)崿F(xiàn)由鍵盤輸入1則輸出“星期一”、……、輸入7輸出“星期日”,如輸入其他數(shù)據(jù)則提示:>7或<1!3.2.1
switch語(yǔ)句假設(shè)程序如下:main(){intx;printf("Pleaseinputanum(1-7):");scanf("%d",&x);switch(x){case1:printf("Mondy.\n");case2:printf("Tuesday.\n");case3:printf("Wednesday.\n");case4:printf("Thursday.\n");case5:printf("Friday.\n");case6:printf("Saturday.\n");case7:printf("Sunday.\n");default:printf("Inputerror,>7or<1.\n");}}如輸入4,輸出什么結(jié)果?3.2.2
break語(yǔ)句在switch語(yǔ)句中的作用帶break的switch語(yǔ)句格式(這種switch格式是最為常用的格式):switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句組1;[break;]case常量表達(dá)式2:語(yǔ)句組2;[break;]……case常量表達(dá)式n:語(yǔ)句組n;[break;] [default:語(yǔ)句組n+1;[break;]]}3.2.2
break語(yǔ)句在switch語(yǔ)句中的作用其語(yǔ)義是:先計(jì)算出表達(dá)式的值,如此值與哪個(gè)case后的常量表達(dá)式的值相一致,則執(zhí)行那個(gè)case后的語(yǔ)句組,如此語(yǔ)句組后有break語(yǔ)句則直接退出switch結(jié)構(gòu),如語(yǔ)句組后沒(méi)有break語(yǔ)句則繼續(xù)執(zhí)行后續(xù)case后的語(yǔ)句組,直到遇到break語(yǔ)句退出switch結(jié)構(gòu),如沒(méi)有break語(yǔ)句則會(huì)執(zhí)行后續(xù)所有case及default后的語(yǔ)句組再退出switch結(jié)構(gòu)。如計(jì)算出表達(dá)式的值與case后的所有常量表達(dá)式的值都不同則只執(zhí)行default后的語(yǔ)句組,如沒(méi)有default語(yǔ)句則直接退出switch結(jié)構(gòu)。
其語(yǔ)義是:先計(jì)算出表達(dá)式的值,用此值與哪個(gè)case后的常量表達(dá)式的值相一致,則執(zhí)行那個(gè)case后的語(yǔ)句組,如此語(yǔ)句組后有break語(yǔ)句則直接退出switch結(jié)構(gòu),如語(yǔ)句組后沒(méi)有break語(yǔ)句則繼續(xù)執(zhí)行后續(xù)case后的語(yǔ)句組,直到遇到break語(yǔ)句退出switch結(jié)構(gòu),如沒(méi)有break語(yǔ)句則會(huì)執(zhí)行后續(xù)所有case及default后的語(yǔ)句組再退出switch結(jié)構(gòu)。若計(jì)算出表達(dá)式的值與case后的所有常量表達(dá)式的值都不同則只執(zhí)行default及之后的語(yǔ)句組一直執(zhí)行到最后(若遇break則終止退出switch結(jié)構(gòu)),如沒(méi)有default語(yǔ)句則直接退出switch結(jié)構(gòu)。3.2.2
break語(yǔ)句在switch語(yǔ)句中的作用假設(shè)程序如下:main(){intx;printf("Pleaseinputanum(1-7):");scanf("%d",&x);switch(x){case1:printf("Mondy.\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("Inputerror,>7or<1.\n");}}如輸入4,輸出什么結(jié)果?3.2.2
break語(yǔ)句在switch語(yǔ)句中的作用請(qǐng)?jiān)囍胹witch語(yǔ)句來(lái)完成本章的任務(wù):【例3.11】由鍵盤輸入一個(gè)0~100的整數(shù)給變量n,請(qǐng)用switch語(yǔ)句實(shí)現(xiàn)據(jù)n的大小輸出“優(yōu)秀”、“良好”、“中等”、“及格”、“不及格”。注:90~100分(包括90分)為優(yōu)秀;80~89分(包括80分)為良好;70~79分(包括70分)為中等;60~69分(包括60分)為及格;0~60分(不包括60分)為不及格。課堂練習(xí)
(1)以下程序的運(yùn)行結(jié)果是()。voidmain(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高三物理上學(xué)期“動(dòng)量與能量”綜合測(cè)試卷
- 高速客船知識(shí)考試題及答案
- 2025河南洛陽(yáng)市老城區(qū)招聘勞務(wù)派遣人員5人模擬試卷及答案詳解(奪冠)
- 物資采購(gòu)申請(qǐng)與審批標(biāo)準(zhǔn)化工具
- 企業(yè)員工出差旅行報(bào)銷審批工具
- 2025年病案編碼員資格證試題庫(kù)含答案
- 2025年古代文化常識(shí)題庫(kù)及答案
- 活動(dòng)賽事順利開展承諾書(8篇)
- 環(huán)保能源技術(shù)開發(fā)研究承諾函3篇
- 2025年保育知識(shí)測(cè)試題及答案
- 2025年中國(guó)50歲以上成年人益生菌行業(yè)市場(chǎng)全景分析及前景機(jī)遇研判報(bào)告
- 跨海航線2025年船舶維修與保養(yǎng)市場(chǎng)分析報(bào)告
- 醫(yī)院藥房查對(duì)制度培訓(xùn)
- 貴陽(yáng)輔警管理辦法
- 2025年中國(guó)外運(yùn)股份有限公司招聘筆試參考題庫(kù)含答案解析
- 一年級(jí)心理健康教育教案(全冊(cè))
- 玄武巖纖維項(xiàng)目可行性研究報(bào)告(參考模板范文)
- DB12∕T 1339-2024 城鎮(zhèn)社區(qū)公共服務(wù)設(shè)施規(guī)劃設(shè)計(jì)指南
- 基本公共衛(wèi)生服務(wù)培訓(xùn)
- 籃球規(guī)則培訓(xùn)課件下載
- 新員工入職人事制度培訓(xùn)
評(píng)論
0/150
提交評(píng)論