版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第3章分支結(jié)構(gòu)程序設(shè)計
在上一章我們知道C語言的基本程序結(jié)構(gòu)有3種:順序結(jié)構(gòu)、分支結(jié)構(gòu)(選擇結(jié)構(gòu))、循環(huán)結(jié)構(gòu)。本章主要學習分支結(jié)構(gòu)。學習目標理解分支結(jié)構(gòu)的應(yīng)用熟悉if語句的用法熟悉switch語句的用法本章任務(wù)
由鍵盤輸入一個0~100的整數(shù)給變量n,請分別用if語句與switch語句實現(xiàn)成績的大小輸出“優(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語言的if語句有三種基本形式。分別是:
if語句形式
if-else語句形式
if-elseif-elseif-…-else語句形式3.1.1
if語句
其語義是:如果表達式的值為真,則執(zhí)行if后的語句,否則不執(zhí)行該語句。其過程如圖3.1所示。if語句形式:if(表達式)語句;3.1.1
if語句如:main(){intm=8,n=5;if(m>n)printf("%d",m);}本題輸出結(jié)果為多少?假設(shè)初值m=5,n=8會輸出什么結(jié)果?3.1.1
if語句【例3.1】輸入1個數(shù)給變量n,如果n>=60輸出PASS!”。程序如下:main(){floatn=0;clrscr();printf("Pleaseinputanum:");scanf("%f",&n);if()printf("PASS!");}n>=603.1.1
if語句請同學們自行完成例3.2【例3.2】輸入1個整數(shù)請用if判斷是否是0~100之間,如果是0~100之間則輸出“n=XXrangesfrom0to100”。3.1.1
if語句【例3.3】輸入3個數(shù)x、y、z,并按從大到小的順序輸出。3.1.2
if-else語句
在【例3.1】中能夠?qū)崿F(xiàn)當n的值大于等于60時輸出“PASS”
,有時需要的輸出結(jié)果不只一種,還要在n的值小于60時輸出“FAIL”,此時用剛學過的知識如何解決?有沒有更好的辦法呢?3.1.2
if-else語句if-else語句形式:if(表達式)
語句1;else
語句2;其語義是:如果表達式的值為真,則執(zhí)行語句1,否則執(zhí)行語句2。3.1.2
if-else語句其執(zhí)行過程如圖3.2所示。3.1.2
if-else語句如用if-else實現(xiàn)當n的值大于等于60時輸出“PASS”
,n的值小于60時輸出“FAIL”
。main(){ floatn=0; clrscr(); printf("Pleaseinputanum:"); scanf("%f",&n); if(n>=60) printf("PASS!"); else printf("FAIL!"); }3.1.2
if-else語句【例3.4】輸入三角形的三個邊長a、b、c,并做出能否構(gòu)成三角形的判斷,如能請輸出此三角形的面積否則輸出“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語句【例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語句的嵌套if語句的嵌套是指在if或else分支的語句中又包含if語句或if-else語句。分析如下函數(shù):3.1.3
if語句的嵌套方法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;用以下三種方法實現(xiàn)上面的函數(shù):3.1.3
if語句的嵌套上面的格式3形式常用作多分支if語句。其通用格式如下:if(表達式1)語句1;elseif(表達式2)語句2;……elseif(表達式n)語句n;else語句n+1;語義是:依次判斷表達式的值,當某個表達式值為真時,則執(zhí)行其對應(yīng)的語句。然后跳到整個if語句之外繼續(xù)執(zhí)行程序。如果所有的表達式均為假,則執(zhí)行語句n+1。然后繼續(xù)執(zhí)行后續(xù)程序。
多分支if語句執(zhí)行流程3.1.3
if語句的嵌套【例3.6】編寫程序?qū)崿F(xiàn)輸入不小0的數(shù)x作為一名員工的一個月工資數(shù)額,求應(yīng)交稅款y并輸出。設(shè)應(yīng)交稅款的計算公式如下:3.1.3
if語句的嵌套main(){floatx=0,y;clrscr();printf("Inputx:");scanf("%f",&x);if(x>=0)/*由于工資不能是負數(shù),判斷x是否合法*/{
/**//**/ } else printf("Inputerror,x<0!");}3.1.3
if語句的嵌套試著獨立完成:【例3.7】判別鍵盤輸入字符的類別。根據(jù)輸入字符的ASCII碼來判別字符的類型。由ASCII碼表可知ASCII值小于32的為控制字符。在“0”和“9”之間的為數(shù)字,在“A”和“Z”之間為大寫字母,在“a”和“z”之間為小寫字母,其余則為其它字符。判斷輸入字符ASCII碼所在的范圍,分別給出不同的輸出。例如輸入為“g”,輸出“小寫字符”。3.1.3
if語句的嵌套試著用剛學的if…elseif…elseif…else完成本章的任務(wù):【例3.8】由鍵盤輸入一個0~100的整數(shù)給變量n,請用if語句實現(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嵌套實現(xiàn)會使嵌套的層數(shù)增加從而造成程序冗長,可讀性降低,這時最好用switch結(jié)構(gòu)來實現(xiàn)。3.2.1
switch語句不帶break的switch語句格式:switch(表達式){case常量表達式1:語句組1;case常量表達式2:語句組2;……case常量表達式n:語句組n; [default:語句組n+1;]}3.2.1
switch語句其語義是:先計算出表達式的值,如此值與哪個case后的常量表達式的值相一致,則執(zhí)行那個case后的語句組,及所有后續(xù)case后的語句組,如有default一并執(zhí)行default后的語句組再退出switch結(jié)構(gòu)。如計算出的表達式的值與所有case后的常量表達式的值都不一致時,如有default執(zhí)行default后的語句組,如沒有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語句【例3.9】假設(shè)1~7分別與星期一~星期日對應(yīng),請編寫程序?qū)崿F(xiàn)由鍵盤輸入1則輸出“星期一”、……、輸入7輸出“星期日”,如輸入其他數(shù)據(jù)則提示:>7或<1!3.2.1
switch語句假設(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語句在switch語句中的作用帶break的switch語句格式(這種switch格式是最為常用的格式):switch(表達式){case常量表達式1:語句組1;[break;]case常量表達式2:語句組2;[break;]……case常量表達式n:語句組n;[break;] [default:語句組n+1;[break;]]}3.2.2
break語句在switch語句中的作用其語義是:先計算出表達式的值,如此值與哪個case后的常量表達式的值相一致,則執(zhí)行那個case后的語句組,如此語句組后有break語句則直接退出switch結(jié)構(gòu),如語句組后沒有break語句則繼續(xù)執(zhí)行后續(xù)case后的語句組,直到遇到break語句退出switch結(jié)構(gòu),如沒有break語句則會執(zhí)行后續(xù)所有case及default后的語句組再退出switch結(jié)構(gòu)。如計算出表達式的值與case后的所有常量表達式的值都不同則只執(zhí)行default后的語句組,如沒有default語句則直接退出switch結(jié)構(gòu)。
其語義是:先計算出表達式的值,用此值與哪個case后的常量表達式的值相一致,則執(zhí)行那個case后的語句組,如此語句組后有break語句則直接退出switch結(jié)構(gòu),如語句組后沒有break語句則繼續(xù)執(zhí)行后續(xù)case后的語句組,直到遇到break語句退出switch結(jié)構(gòu),如沒有break語句則會執(zhí)行后續(xù)所有case及default后的語句組再退出switch結(jié)構(gòu)。若計算出表達式的值與case后的所有常量表達式的值都不同則只執(zhí)行default及之后的語句組一直執(zhí)行到最后(若遇break則終止退出switch結(jié)構(gòu)),如沒有default語句則直接退出switch結(jié)構(gòu)。3.2.2
break語句在switch語句中的作用假設(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語句在switch語句中的作用請試著用switch語句來完成本章的任務(wù):【例3.11】由鍵盤輸入一個0~100的整數(shù)給變量n,請用switch語句實現(xiàn)據(jù)n的大小輸出“優(yōu)秀”、“良好”、“中等”、“及格”、“不及格”。注:90~100分(包括90分)為優(yōu)秀;80~89分(包括80分)為良好;70~79分(包括70分)為中等;60~69分(包括60分)為及格;0~60分(不包括60分)為不及格。課堂練習
(1)以下程序的運行結(jié)果是()。voidmain(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代理收款合同范例
- 建筑勘察設(shè)計合同
- 簡化保價合同協(xié)議
- 電腦定制化購銷協(xié)議
- 便利店薯片購銷合同
- 個人借款合同的還款方式
- 借款協(xié)議書集團內(nèi)部
- 工作服采購合同模板
- 蕪湖市房屋買賣合同版式示例
- 集中采購和政府采購合同的效益分析
- 《地質(zhì)災(zāi)害監(jiān)測技術(shù)規(guī)范》
- 2024-2030年中國云母制品制造市場發(fā)展狀況及投資前景規(guī)劃研究報告
- 2025年上半年內(nèi)蒙古鄂爾多斯伊金霍洛監(jiān)獄招聘17名(第三批)易考易錯模擬試題(共500題)試卷后附參考答案
- QC080000培訓講義課件
- 24秋國家開放大學《農(nóng)產(chǎn)品質(zhì)量管理》形考任務(wù)1-2+形考實習1-3參考答案
- 科技興國未來有我主題班會教學設(shè)計
- 房子管護合同范例
- 光伏施工安全措施
- 2024-2025華為ICT大賽(網(wǎng)絡(luò)賽道)高頻備考試題庫500題(含詳解)
- 汽車智能制造技術(shù)課件
- 江蘇省揚州市邗江中學2025屆物理高一第一學期期末學業(yè)質(zhì)量監(jiān)測試題含解析
評論
0/150
提交評論