




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
*1第6講選擇結(jié)構(gòu)程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)之二*2復(fù)習(xí)順序結(jié)構(gòu)程序是一種按書寫順序執(zhí)行的結(jié)構(gòu)。順序結(jié)構(gòu)程序一般由哪幾個(gè)部分組成?變量定義輸入數(shù)據(jù)處理數(shù)據(jù)輸出結(jié)果*3教學(xué)內(nèi)容:if語句,if…else…語句
switch語句選擇結(jié)構(gòu)程序舉例
*4教學(xué)目標(biāo):
1.掌握條件的表示方法。
2.熟練掌握if語句的語法和使用方法。
3.掌握switch語句的語法和使用方法。
4.熟練掌握分支語句的嵌套使用方法。*5a>bc=bc=ayesno開始結(jié)束顯示結(jié)果c輸入兩個(gè)整數(shù)a,b分支(選擇)結(jié)構(gòu):scanf(“%d,%d”,&a,&b);if(a>b)
c=a;
else
c=b;
printf(“%d”,c);*6#include<stdio.h>voidmain(){
inta,b,c;
scanf("%d,%d",&a,&b);
if(a>b)//無;
c=a; else//無;
c=b; printf("%d",c);}分支結(jié)構(gòu)*76.1if語句的應(yīng)用單分支結(jié)構(gòu)偽代碼:
執(zhí)行語句1;
startifif<表達(dá)式為真>
執(zhí)行語句2;
endif
執(zhí)行語句3;假(0)表達(dá)式語句2真(非0)語句1語句3注意:語句2稱為if語句的內(nèi)嵌語句,可以是1條語句,也可以是用{}括起來的復(fù)合語句。*8分支結(jié)構(gòu)程序示例1輸入考生的分?jǐn)?shù),判斷是否大于等于60分,如果是輸出”pass”startInputmarkMark>=60output“pass”endyesno#include"stdio.h"voidmain(){ intmark; scanf("%d",&mark);
if(mark>=60) printf("pass\n");}*9#include"stdio.h"voidmain(){ intmark;
scanf("%d",&mark); if(mark>=60) printf("pass\n");}表達(dá)式(通常是邏輯或關(guān)系表達(dá)式)必須用(),右括號(hào)后面沒有“;”if的內(nèi)嵌語句要有縮進(jìn)*10
要求:從鍵盤輸入兩個(gè)整數(shù)a和b,如果a大于b則交換兩數(shù),最后輸出兩個(gè)數(shù)。分支結(jié)構(gòu)程序示例二a>b交換a、b真假輸入a,b輸出a,b開始結(jié)束*11#include<stdio.h>voidmain(){inta,b,t;printf("\nInputa,b:");scanf("%d,%d",&a,&b);if(a>b){t=a;a=b;b=t;}printf("a=%d,b=%d\n",a,b);}*12單分支結(jié)構(gòu)的if語句if(expression)
語句;//if語句結(jié)束if(expression){語句1;語句2;}//if語句結(jié)束一定記得{}不能丟!}后沒有分號(hào)*13雙分支結(jié)構(gòu)偽代碼:
執(zhí)行語句1;
startifif<表達(dá)式為真>
執(zhí)行語句2;
endif
elsestart
執(zhí)行語句3;endelse
執(zhí)行語句4;注意:語句2和語句3稱為if語句的內(nèi)嵌語句,可以是1條語句,也可以是用{}括起來的復(fù)合語句。表達(dá)式語句2真(非0)假(0)語句3語句1語句4*14雙分支結(jié)構(gòu)程序示例要求:輸入一個(gè)字符,判斷它是否是0~9之間的字符,并顯示相應(yīng)提示。?c是數(shù)字真假c不是數(shù)字怎么判斷一個(gè)字符是否是‘0’~‘9’之間的字符呢?#include<stdio.h> voidmain(){charc;printf("inputacharacter:");c=getchar();
if(c>=48&&c<=57)printf("Itisanumber.\n");
elseprintf("Itisnotanumber");}開始結(jié)束輸入c*15編程練習(xí)輸入考生的分?jǐn)?shù),判斷是否大于等于60分,如果是輸出”pass”,否則輸出”fail”*16startInputmarkMark>=60output“pass”endyesnooutput“fail”*17#include"stdio.h"voidmain(){ intmark;
scanf("%d",&mark); if(mark>=60) printf("pass\n");elseprintf(“fail\n”);}*18條件表達(dá)式的應(yīng)用例:if(a>b)printf(“%d”,a);elseprintf(“%d”,b);printf(“%d”,a>b?a:b);*19雙分支if語句形式if(表達(dá)式)語句1;else
語句2;注意:if和else同屬一個(gè)語句,else不能單獨(dú)使用,只能是if語句的一部分*20語句執(zhí)行流程:表達(dá)式1語句1真(非0)假(0)真(非0)語句2表達(dá)式2真(非0)表達(dá)式n語句n語句n+1假(0)假(0)下一語句多分支選擇結(jié)構(gòu)*21語句形式:if(表達(dá)式1)語句1;elseif(表達(dá)式2)語句2;
……elseif(表達(dá)式n)語句n;
else語句n+1;*22分支結(jié)構(gòu)程序示例三例:分段函數(shù)的計(jì)算
0(x<0)
y=f(x)=x(0≤x≤50)
x2(x>50)假輸入xx<0真0=<x<=50y=x*xy=xy=0假真#include<stdio.h>voidmain(){floatx;scanf("%f",&x);if(x<0.0) printf("y=0\n");if(x>=0.0&&x<=50.0) printf("y=%f\n",x);if(x>50) printf("y=%f\n",x*x);}elseif(x<=50.0) printf("y=%f\n",x);else printf("y=%f\n",x*x);}elseif(0<=x&&x<=50.0)printf("y=%f\n",x);else printf("y=%f\n",x*x);}*23注意事項(xiàng)(1)if和else同屬一個(gè)語句,else不能單獨(dú)使用,只能是if語句的一部分(2)if語句中條件的寫法應(yīng)盡量簡(jiǎn)單。(3)if語句的條件表示:通常為關(guān)系表達(dá)式、邏輯表達(dá)式,也可以是任意的數(shù)值類型,如
if(3)printf(“ok”);if(‘a(chǎn)’)printf(“%d”,’a’);*24條件分支的嵌套
當(dāng)if語句中又包含若干個(gè)if語句時(shí),則構(gòu)成了if語句嵌套的情形。語句形式:if(表達(dá)式1){
if(表達(dá)式2)語句1;}if(表達(dá)式1){
if(表達(dá)式2)
語句1;else
語句2;}*25一般形式:if()if()語句1else語句2elseif()語句3else語句4else總是與它上面最近的if配對(duì)*26編程者的目的:if()
if()語句1
(內(nèi)嵌if語句)else
if()語句2
(內(nèi)嵌if語句)
else語句3系統(tǒng)的處理:if()
if()語句1(內(nèi)嵌if語句)
elseif()語句2(內(nèi)嵌if語句)
else語句3{}*27注意事項(xiàng)else與if的配對(duì)原則:else與同一層最接近它,而又沒有其它else語句與之相匹配的if語句配對(duì)?!纠?-5】以下程序的執(zhí)行結(jié)果是什么?
main(){intx=2,y=-1,z=2;
if(x<y)if(y<0)z=0;elsez+=1;printf(“%d\n”,z);}/*結(jié)果是2*/哦,原來是因?yàn)閑lse總是與靠近它的if配對(duì)…
*28常見錯(cuò)誤:
if(x>0);if(x=2)if(1<=x<=10)y=3x+2;printf(“y>0”);y=x-1;
if(a==b==c);printf(“等腰三角形);*29小結(jié)分支結(jié)構(gòu)有三種形式,分別用什么語句實(shí)現(xiàn)的?單分支結(jié)構(gòu)雙分支結(jié)構(gòu)多分支結(jié)構(gòu)if(表達(dá)式)語句1;if(表達(dá)式)語句1;else語句2;if語句嵌套問題:從鍵盤上輸入一個(gè)百分制成績(jī)score,按下列原則輸出其等級(jí):score≥90,等級(jí)為A;80≤score<90,等級(jí)為B;70≤score<80,等級(jí)為C;60≤score<70,等級(jí)為D;score<60,等級(jí)為E。*30#include"stdio.h"voidmain(){ floatscore;
printf("pleaseinputscore:"); scanf("%f",&score); if(score>=90) printf("A"); elseif(score>=80) printf("B"); elseif(score>=70) printf("C"); elseif(score>=60) printf("D"); else printf("E");}*31switch語句1、語句形式:switch(表達(dá)式){case常量1:語句1;
case常量2:語句2;
case常量3:語句3;
.......case常量n:語句n;
default:語句n+1;}根據(jù)表達(dá)式的不同值,選擇不同的程序分支,又稱開關(guān)語句。數(shù)值型或字符型常量表達(dá)式的值必須互不相同,否則執(zhí)行時(shí)將出現(xiàn)矛盾,即同一個(gè)開關(guān)值,將對(duì)應(yīng)多種執(zhí)行方案。千萬不能接(;)號(hào)*322、語句執(zhí)行流程:指語句的最后一條是否為break;簡(jiǎn)單語句或復(fù)合語句breakbreak有無break有無有計(jì)算表達(dá)式常量1常量2常量n=語句1…===語句2語句n其它=語句n+1無值case語句出現(xiàn)的次序并不影響執(zhí)行結(jié)果。*33#include<stdio.h>voidweekday(){ intweekday; printf("intputintegernumber:"); scanf("%d",&weekday); switch(weekday) { case1:printf("Monday\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("error\n"); }}voidmain(){ weekday();}輸入一個(gè)數(shù)字,輸出一個(gè)有關(guān)星期幾的英文單詞。如輸入數(shù)字3,要求輸出Wednesday。*34輸入一個(gè)數(shù)字,輸出一個(gè)有關(guān)星期幾的英文單詞。如輸入數(shù)字3,要求輸出Wednesday。#include<stdio.h>voidweekday(){ intweekday; printf("intputintegernumber:"); scanf("%d",&weekday); switch(weekday) { 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"); }}voidmain(){ weekday();}*35多分支結(jié)構(gòu)程序示例“成績(jī)等級(jí)”問題2要求:從鍵盤上輸入一個(gè)百分制成績(jī)score,按下列原則輸出其等級(jí):score≥90,等級(jí)為A;80≤score<90,等級(jí)為B;70≤score<80,等級(jí)為C;60≤score<70,等級(jí)為D;score<60,等級(jí)為E。*36源程序#include<stdio.h>voidmain()
{Iintscore,grade;
printf(“Inputascore(0~100):”);
scanf(“%d”,&score);
grade=score/10;/*將成績(jī)整除10,轉(zhuǎn)化成switch語句中的case標(biāo)號(hào)*/
switch(grade){case10:case9:printf(“grade=A\n”);break; 使用switch解題的關(guān)鍵,通過分析找到表達(dá)式,將問題分成幾種情況。*37
case8:printf("grade=B\n");break;case6:printf("grade=D\n");break;case7:printf("grade=C\n");break;case5:case
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年籃球裁判員應(yīng)急方案試題及答案
- 2024年模具設(shè)計(jì)師考試大綱的全面解讀試題及答案
- 學(xué)習(xí)重點(diǎn) 2024年體育經(jīng)紀(jì)人考試知識(shí)點(diǎn)分解試題及答案
- 智能運(yùn)輸物流中心項(xiàng)目可行性研究報(bào)告(范文參考)
- 深度解析2024年籃球裁判員試題及答案匯編
- CAD軟件在模具設(shè)計(jì)中的萎縮試題及答案
- 2024年農(nóng)業(yè)植保員考試復(fù)習(xí)深入試題及答案
- 組合學(xué)習(xí)模式助力注冊(cè)會(huì)計(jì)師考試成功試題及答案
- 2024年模具設(shè)計(jì)師資格考試考點(diǎn)大解析試題與答案
- 體育經(jīng)紀(jì)人行業(yè)的跨界整合趨勢(shì)試題及答案
- 2025年證券從業(yè)資格證考試題庫試題及答案
- 管道工程安全管理與保障措施考核試卷
- 豬場(chǎng)出售合同協(xié)議
- 廣東省能源集團(tuán)西北(甘肅)有限公司招聘筆試題庫2025
- 國家能源集團(tuán)中國神華煤制油化工有限公司鄂爾多斯煤制油分公司招聘筆試題庫2025
- 2025年上半年內(nèi)蒙古森工集團(tuán)公開招聘工勤技能人員605名易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 駐村隊(duì)員個(gè)人工作總結(jié)
- 雨季行車安全教育
- 計(jì)量標(biāo)準(zhǔn)器具管理制度
- 浙江省臺(tái)州市2025屆高三下學(xué)期4月二模試題 英語 含解析
- 第三單元 運(yùn)算律 單元測(cè)試 人教版 數(shù)學(xué) 四年級(jí)下冊(cè)
評(píng)論
0/150
提交評(píng)論