版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第4章分支結(jié)構(gòu)程序設(shè)計第4章分支結(jié)構(gòu)程序設(shè)計主要內(nèi)容4.1程序的邏輯結(jié)構(gòu)4.2if語句4.3switch語句 4.4goto語句4.5分支結(jié)構(gòu)應(yīng)用舉例4.1程序的邏輯結(jié)構(gòu)4.1.1邏輯結(jié)構(gòu)概述4.1.2三種結(jié)構(gòu)的框圖表示4.1.1邏輯結(jié)構(gòu)概述順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)是C語言程序的三種基本結(jié)構(gòu),這三種結(jié)構(gòu)互相結(jié)合,可以實現(xiàn)程序的任何邏輯控制。
4.1.1邏輯結(jié)構(gòu)概述順序結(jié)構(gòu):問題:輸入一個學(xué)生的兩門課的成績,計算出平均成績。算法:步驟①開始步驟②輸入一個學(xué)生兩門課的成績a1、a2。步驟③計算平均成績(a1+a2)/2→ave。步驟④輸出平均成績ave。步驟⑤結(jié)束
4.1.1邏輯結(jié)構(gòu)概述分支結(jié)構(gòu)問題:輸入一個學(xué)生的2門課的成績,若平均成績不低于90分,則顯示“優(yōu)等生”,否則顯示“要加油?。 ?。算法:步驟①開始步驟②輸入一個學(xué)生兩門課的成績a1、a2。步驟③計算平均成績(a1+a2)/2→ave。步驟④若ave≥90,則執(zhí)行步驟⑤;否則執(zhí)行步驟⑥步驟⑤輸出“優(yōu)等生”,轉(zhuǎn)步驟⑦步驟⑥輸出“要加油啊!”。步驟⑦結(jié)束4.1.1邏輯結(jié)構(gòu)概述循環(huán)結(jié)構(gòu)
問題:按照問題2的標(biāo)準(zhǔn),統(tǒng)計全班(n個學(xué)生)的優(yōu)等生人數(shù)。
算法:步驟①開始;步驟②設(shè)置變量count對輸入的學(xué)生數(shù)計數(shù),count初值為1;設(shè)置變量result對優(yōu)等生計數(shù),初值為0。步驟③輸入班級學(xué)生數(shù)n。步驟④若count≤n,則執(zhí)行步驟⑤;否則轉(zhuǎn)步驟⑩。步驟⑤輸入一個學(xué)生兩門課的成績a1、a2。步驟⑥計算平均成績(a1+a2)/2→ave。步驟⑦若ave≥90,則執(zhí)行步驟⑧;否則轉(zhuǎn)步驟⑨;步驟⑧
result+1→result。步驟⑨
count+1→count;轉(zhuǎn)步驟④;步驟⑩輸出統(tǒng)計結(jié)果,結(jié)束。
4.1.2三種結(jié)構(gòu)的框圖表示1.順序結(jié)構(gòu)傳統(tǒng)流程圖N-S圖4.1.2三種結(jié)構(gòu)的框圖表示2.分支結(jié)構(gòu)傳統(tǒng)流程圖N-S圖4.1.2三種結(jié)構(gòu)的框圖表示3.循環(huán)結(jié)構(gòu)傳統(tǒng)流程圖N-S圖4.2if語句4.2.1if語句的一般形式4.2.2if語句的簡單形式4.2.3if語句的嵌套結(jié)構(gòu)4.2.4if-elseif結(jié)構(gòu)4.2.1if語句的一般形式結(jié)構(gòu)
if(表達(dá)式){語句組1}else{語句組2}其執(zhí)行過程如果表達(dá)式的值為非0,則執(zhí)行“語句組1”,然后執(zhí)行緊接“語句組2”之后的語句;否則,跳過{語句組1}而執(zhí)行{語句組2},然后繼續(xù)向下執(zhí)行。4.2.1if語句的一般形式例4-1輸入一個學(xué)生的兩門課的成績,若平均成績不低于90分,則顯示“優(yōu)等生”,否則顯示“要加油啊!”。/*programe4-1.c*/#include<stdio.h>voidmain(){ inta1,a2,ave; printf("輸入兩門課的成績,數(shù)據(jù)之間用“,”分隔:"); scanf("%d,%d",&a1,&a2); ave=(a1+a2)/2;
if(ave>=90) printf("優(yōu)等生!\n");
else printf("要加油啊!\n");}4.2.1if語句的一般形式例4-2
計算分段函數(shù)的值。/*programe4-2.c*/#include<stdio.h>voidmain(){intx,y;printf("X=");scanf("%d",&x);if(x>0)y=x+25;elsey=x-25;printf("Y=%d\n",y);}4.2.2if語句的簡單形式
結(jié)構(gòu)if(表達(dá)式)
{語句組}
執(zhí)行過程若表達(dá)式的值非0(即真),則執(zhí)行{語句組},然后繼續(xù)執(zhí)行if語句的下一個語句;否則,不執(zhí)行{語句組},而直接執(zhí)行{語句組}之下的語句,即if語句的下一個語句。簡言之,該if語句的功能就是根據(jù)條件(表達(dá)式的值),決定是否執(zhí)行{語句組}。4.2.2if語句的簡單形式例4-3
輸入一個整數(shù)x,若是偶數(shù),則輸出它。/*programe4-3.c*/#include<stdio.h>voidmain(){intx;printf("Inputx:");scanf("%d",&x);if(x%2==0)printf("%d\n",x);}4.2.1if語句的簡單形式例4-2
求兩個整數(shù)的最大數(shù)。①開始;②設(shè)兩個數(shù)為x,y,且用max表示大數(shù);③輸入x,y的數(shù)值;④設(shè)x是大數(shù):max=x;⑤判斷max<y的正確性,若正確,則y是大數(shù):max=y;⑥輸出max的值;⑦結(jié)束。/*programe4-4.c*/#include<stdio.h>voidmain(){ intx,y,max; printf("Inputx,y:"); scanf("%d,%d",&x,&y); max=x; if(max<y) max=y; printf("MAX=%d\n",max);}4.2.3if語句的嵌套結(jié)構(gòu)if語句的嵌套
if語句的{語句組}內(nèi)又使用了if語句。例4-5對實數(shù)x,若其不小于0,則求它的平方數(shù)y,當(dāng)y>500時輸出y,否則輸出500;若x<0,則輸出x。4.2.3if語句的嵌套結(jié)構(gòu)4.1.3if語句的嵌套結(jié)構(gòu)/*programe4-5.c*/#include<stdio.h>voidmain()
{floatx,y;printf("Inputarealnumber:");scanf("%f",&x);
if(x>=0.0){y=x*x;if(y>500.0)printf("%f\n",y);
elseprintf("%f\n",500.0);}
elseprintf("%f\n",x);}嵌套的if語句外層if語句4.3.3if語句的嵌套結(jié)構(gòu)例4-6計算分段函數(shù)值/*programe4-6.c*/#include<stdio.h>voidmain(){floatx,y;printf("Input:");scanf("%f",&x);if(x>0)y=5*x+8;elseif(x==0)y=36;elsey=1.5*x-26;printf("y=%f\n",y);}4.2.4if-elseif結(jié)構(gòu)一般結(jié)構(gòu)if(表達(dá)式1)
{語句組1}elseif(表達(dá)式2)
{語句組2}elseif(表達(dá)式3){語句組3}
.
.
.elseif(表達(dá)式n){語句組n}else{語句組n+1}
執(zhí)行過程從上到下逐個對條件進(jìn)行判斷,一旦發(fā)現(xiàn)條件滿足就執(zhí)行與它有關(guān)的語句組,其下的所有條件都不再判斷,當(dāng)然它們的語句組也不被執(zhí)行;當(dāng)任何一個條件都不滿足時,執(zhí)行最后一個{語句組n+1}。If語句說明表達(dá)式:常量、變量、運算符、函數(shù)、()組成;If中的表達(dá)式常見的是關(guān)系表達(dá)式或邏輯表達(dá)式If中的表達(dá)式也可以是:常量、變量或其他類型表達(dá)式{}用來劃分程序?qū)哟危鋵κ褂?。可以用縮進(jìn)來配合。但是縮進(jìn)不能代替{}。每一個分支執(zhí)行后都退出分支結(jié)構(gòu)繼續(xù)向下執(zhí)行,分支結(jié)構(gòu)內(nèi)部如果沒有其他分支或循環(huán)語句的話順序執(zhí)行4.3switch語句switch語句是專門用于多路分支選擇的語句,適用于if-elseif式的結(jié)構(gòu),而且更清晰。
switch語句的一般格式:switch(表達(dá)式){case常量1:
語句組1case常量2:
語句組2┇case常量n:
語句組ndefault:
語句組n+1}執(zhí)行過程首先計算switch后面表達(dá)式的值,然后與第一個case的“常量”進(jìn)行比較,若不相等,則跳過其下的語句組,再與下一個case的“常量”進(jìn)行比較;若與某一個case的“常量”相等,則從其下的語句組開始,依次向下執(zhí)行各語句組的語句,直至遇到一個強(qiáng)制中斷語句break或執(zhí)行完最后一個語句組語句為止。當(dāng)所有case都不符合要求時,執(zhí)行default下的語句組語句。一般格式中的“default:”及其語句組允許缺省。
4.3switch語句例4-7switch執(zhí)行過程示例程序。main(){inti;scanf("%d",&i);switch(i){case0:printf("zero");case1:printf("one");break;case2:printf("two");case3:printf("three");case4:printf("four");default:printf("other");}printf("\n");}4.3switch語句例4-8缺省case語句組的程序舉例。main(){charresult;scanf("%c",&result);switch(result){case'A':case'B':case'C':printf("Good!\n");break;case'D':case'E':printf("Bad!\n");break;default:printf("Error!\n");}}4.4goto語句goto語句是一種無條件轉(zhuǎn)移語句,主要用于控制程序的執(zhí)行方向,也可以利用它反復(fù)地執(zhí)行同一段程序。一般格式:goto語句標(biāo)號;語句標(biāo)號是一個標(biāo)識符,它和語句之間以“:”分隔,執(zhí)行g(shù)oto語句后,程序?qū)⑻D(zhuǎn)到該標(biāo)號處,并執(zhí)行其后的語句。4.4goto語句例4-9
輸入一批自然數(shù),求它們的累加和,當(dāng)輸入數(shù)值為-1時,結(jié)束求和過程。/*programe4-9.c*/#include<stdio.h>voidmain(){intn,sum=0;loop:printf("Inputainteger:");scanf("%d",&n);if(n!=-1){sum=sum+n;
gotoloop;
}printf("Sum=%d\n",sum);}4.5分支結(jié)構(gòu)應(yīng)用舉例4.5.1閏年問題4.5.2判斷等邊三角形4.5.3求解一元二次方程4.5.4學(xué)生成績分等顯示4.5.1閏年問題例4-10閏年判斷程序。1.問題分析與算法設(shè)計⑴邏輯表達(dá)式y(tǒng)ear%400==0||year%4==0&&year%100!=0⑵輸入year,根據(jù)上述邏輯表達(dá)式的值,即可得到y(tǒng)ear是否閏年的結(jié)論。
2.實現(xiàn)程序/*programe4-10.c*/#include<stdio.h>voidmain(){ intyear; printf("Inputyear:"); scanf("%d",&year); if(year%400==0||year%4==0&&year%100!=0) printf("%disaleapyear.\n",year); else printf("%disnotaleapyear.\n",year);}4.5.2判斷等邊三角形
例4-11輸入三角形的邊長值,判斷三角形是否是等邊三角形。1.問題分析與算法設(shè)計設(shè)三角形三條邊為a、b、c,則對于輸入的任意一組數(shù)據(jù),首先要判斷其正確性,若不能滿足構(gòu)成三角形的條件時,則數(shù)據(jù)不正確,要重新輸入數(shù)據(jù)。能構(gòu)成三角形時,再判斷是否是等邊三角形。⑴下面的邏輯表達(dá)式成立時,數(shù)據(jù)不正確,不能構(gòu)成三角形。a<=0||b<=0||c<=0||a+b<c||a+c<b||b+c<a⑵能構(gòu)成三角形,且下面的邏輯表達(dá)式成立時,則為等邊三角形。a==b&&a==c2.實現(xiàn)程序/*programe4-11.c*/#include<stdio.h>voidmain(){ inta,b,c; loop:printf("a,b,c:"); scanf("%d,%d,%d",&a,&b,&c); if(a<=0||b<=0||c<=0||a+b<c||a+c<b||b+c<a) gotoloop; if(a==b&a==c) printf("equilateraltriangle\n"); else printf("noequilateraltriangle\n");}4.5.3求解一元二次方程例4-12
設(shè)計求解一元二次方程(a≠0)的通用程序1.問題分析與算法設(shè)計⑴若有實根,則計算并輸出實根⑵程序的輸入量為方程的系數(shù)a、b、c。。⑶程序中要使用數(shù)學(xué)函數(shù)sqrt(),要注意打開math.h文件。2.實現(xiàn)程序/*programe4-12.c*/#include<stdio.h>#include<math.h>voidmain(){ floata,b,c; floatx1,x2,d; printf("Inputa,b,c:"); scanf("%f,%f,%f",&a,&b,&c); d=b*b-4*a*c; if(d>=0) { x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); printf("x1=%f,x2=%f\n",x1,x2); } else printf("norealroot.\n");}4.5.4學(xué)生成績分等顯示例4-13
學(xué)生成績分等顯示程序。學(xué)生有數(shù)學(xué)、英語兩門課程,按百分制考核。要求輸入各門課程成績,按平均成績分等顯示:優(yōu)秀(excellence):平均成績≥90;良好(allright):80≤平均成績<90;中等(middling):70≤平均成績<80;及格(pass):60≤平均成績<70;不及格(fail):平均成績<60。4.5.4學(xué)生成績分等顯示/*programe4-13.c*/#include<stdio.h>voidmain(){inta,b;intave;repeat:printf("Data(a,b):");scanf("%d,%d",&a,&b);if(a<0||b<0)gotorepeat;ave=(a+b)/2;switch(ave/10){case10:case9:
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度農(nóng)機(jī)安全檢測與認(rèn)證服務(wù)合同4篇
- 二零二五年度新能源汽車關(guān)鍵材料鎳礦石供應(yīng)合同4篇
- 二零二五年度廚師職業(yè)保險與意外傷害保障合同4篇
- 二零二五版定制門銷售合同示范文本3篇
- 2025年度男方離婚協(xié)議書模板定制與婚姻法律風(fēng)險評估合同
- 2025年度門窗行業(yè)風(fēng)險管理與保險合同-@-2
- 二零二五年度航空機(jī)票代理客戶關(guān)系管理體系合同3篇
- 二零二五年度大型農(nóng)機(jī)跨區(qū)域作業(yè)租賃合同2篇
- 2025年度個人地暖系統(tǒng)環(huán)保材料采購合同
- 2025年度特色苗木新品種引進(jìn)及推廣合同3篇
- 2024-2030年中國海泡石產(chǎn)業(yè)運行形勢及投資規(guī)模研究報告
- 動物醫(yī)學(xué)類專業(yè)生涯發(fā)展展示
- 2024年同等學(xué)力申碩英語考試真題
- 消除“艾梅乙”醫(yī)療歧視-從我做起
- 非遺文化走進(jìn)數(shù)字展廳+大數(shù)據(jù)與互聯(lián)網(wǎng)系創(chuàng)業(yè)計劃書
- 2024山西省文化旅游投資控股集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 科普知識進(jìn)社區(qū)活動總結(jié)與反思
- 加油站廉潔培訓(xùn)課件
- 現(xiàn)金日記賬模板(帶公式)
- 消化內(nèi)科專科監(jiān)測指標(biāo)匯總分析
- 深圳市物業(yè)專項維修資金管理系統(tǒng)操作手冊(電子票據(jù))
評論
0/150
提交評論