![C程序設(shè)計Ch 分支實用_第1頁](http://file4.renrendoc.com/view/8f2ebfea99cd304ace789f5e136186a8/8f2ebfea99cd304ace789f5e136186a81.gif)
![C程序設(shè)計Ch 分支實用_第2頁](http://file4.renrendoc.com/view/8f2ebfea99cd304ace789f5e136186a8/8f2ebfea99cd304ace789f5e136186a82.gif)
![C程序設(shè)計Ch 分支實用_第3頁](http://file4.renrendoc.com/view/8f2ebfea99cd304ace789f5e136186a8/8f2ebfea99cd304ace789f5e136186a83.gif)
![C程序設(shè)計Ch 分支實用_第4頁](http://file4.renrendoc.com/view/8f2ebfea99cd304ace789f5e136186a8/8f2ebfea99cd304ace789f5e136186a84.gif)
![C程序設(shè)計Ch 分支實用_第5頁](http://file4.renrendoc.com/view/8f2ebfea99cd304ace789f5e136186a8/8f2ebfea99cd304ace789f5e136186a85.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
會計學(xué)1C程序設(shè)計Ch分支實用2
分析問題確定算法編寫程序
調(diào)試程序整理結(jié)果第1頁/共46頁3NiklausWirth公式:
程序=數(shù)據(jù)結(jié)構(gòu)+算法第2頁/共46頁4程序=
數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計方
法+語言工具+程序設(shè)計人員第3頁/共46頁5§3.1
算法第4頁/共46頁6一、算法概念1.算法概念算法:解決問題的方法與步驟。如:某菜品制作步驟就是加工該菜肴的算法;
樂譜就是演奏某樂曲的算法;
太極拳動作圖解就是打太極拳的算法。例1(清華P14例2.2)寫出輸出50個學(xué)生成績中大于等于80分者的算法。假設(shè):i為學(xué)生人數(shù)
ni為第i個學(xué)生的學(xué)號
gi為第i個學(xué)生的成績第5頁/共46頁7則算法如下:S1:1iS2:輸入ni,gi的值S3:如果gi≥80,則輸出ni,gi的值,否則不輸出S4:i+1iS5:若i≤50,則返回S2;否則算法結(jié)束2.算法優(yōu)劣標(biāo)準(zhǔn):
正確、簡單3.算法種類:數(shù)值計算算法與非數(shù)值計算算法
(清華P14)第6頁/共46頁8二、算法特性(清華P18)1.有窮性2.確定性(無歧義性)3.有效性4.有零個或多個輸入5.至少有一個輸出三、算法的組成要素(高教P56)1.操作(算數(shù)運算、邏輯運算、關(guān)系運算、函數(shù)運算、位運算、I/O操作等)2.控制結(jié)構(gòu)(順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu))第7頁/共46頁9四、算法的描述(清華P19,高教P57)1.用自然語言描述算法2.用傳統(tǒng)流程圖描述算法(組成元件見清華P19圖2.3)
例2(清華P20例2.7/高教P59求n!)
例3.用傳統(tǒng)流程圖描述求解兩個整數(shù)中的最大值的算法。第8頁/共46頁10
例3.
開始定義inta,b,ca>b輸入a,b的值acbc輸出c的值結(jié)束第9頁/共46頁113.用N_S流程圖描述算法(組成元件見清華P20圖2.24至2.27/高教P59圖3.6)
例4.
用N_S流程圖描述求解兩個整數(shù)中的最大值的算法。例5.(例1的N_S圖)定義inta,b,c輸入a,b的值a>bacbc輸出c的值yn定義inti,ni,gi輸入ni,gigi≥80i+1i1i輸出ni,giyn當(dāng)i≤50例4例5第10頁/共46頁124.用偽代碼描述算法用偽代碼描述算法就是用介于自然語言與計算機語言之間的文字與符號來描述算法。例6.(對應(yīng)例5)
BEGIN1iwhilei≤50{inputni,giifgi≥80printniandgii+1i}
END第11頁/共46頁135.用程序設(shè)計語言描述算法計算機無法識別流程圖和偽代碼,只有用程序設(shè)計語言描述的算法,才能被計算機執(zhí)行、實現(xiàn)。與偽代碼不同,用程序設(shè)計語言描述算法時,必須嚴(yán)格遵守所用語言的語法規(guī)則。例7.
(例6中算法的C語言描述.高教P61例3.1類似)main(){inti=1,n,g;while(i<=50)
{scanf(“%d%d”,&n,&g);if(g>=80)printf(“%d,%d\n”,n,g);i=i+1;}
}第12頁/共46頁14§3.2
結(jié)構(gòu)化程序設(shè)計方法第13頁/共46頁15一、程序設(shè)計方法及其發(fā)展二、結(jié)構(gòu)化程序設(shè)計方法1.結(jié)構(gòu)化程序設(shè)計方法(功能抽象,化整為零,逐步細(xì)化)2.結(jié)構(gòu)化程序設(shè)計原則(高教P61例3.1后歸納總結(jié))(1).模塊化
(2).自頂向下
(3).逐步求精3.結(jié)構(gòu)化程序的特點
(1).由三種基本結(jié)構(gòu)順序組成(清華P28)(2).每個程序塊只有一個入口和一個出口
(3).沒有死語句(執(zhí)行不到的語句)
(4).沒有死循環(huán)設(shè)計的模塊化。劃分模塊時,模塊的獨立性要強;扇出數(shù)要恰當(dāng)(2—5個,≤9個);大小要適中(50——100條語句,≤500條)。編碼的結(jié)構(gòu)化。應(yīng)選擇結(jié)構(gòu)化程度高的程序設(shè)計語言編碼。第14頁/共46頁164.三種基本結(jié)構(gòu)(圖示其傳統(tǒng)框圖和N_S圖。高教P58)
(1).順序結(jié)構(gòu)
(2).分之結(jié)構(gòu)(單分支、二分支、多分支)(3).循環(huán)結(jié)構(gòu)(當(dāng)型循環(huán)、直到型循環(huán))任何一個結(jié)構(gòu)化程序都由這三種基本結(jié)構(gòu)順序組成,在基本結(jié)構(gòu)之間不存在向前或向后的跳轉(zhuǎn),流程的轉(zhuǎn)移只存在于一個基本結(jié)構(gòu)之內(nèi)。第15頁/共46頁17§3.3
C程序整體結(jié)構(gòu)與C語句第16頁/共46頁18一、C程序整體結(jié)構(gòu)
……
……
C程序源程序文件2源程序文件n函數(shù)1源程序文件1預(yù)處理命令全局變量聲明函數(shù)n函數(shù)說明部分函數(shù)體局部變量聲明執(zhí)行語句第17頁/共46頁19二、C語句(個高教P64,P68圖示)1.控制語句(清華P68,9種,控制程序流程)2.函數(shù)調(diào)用語句(由一次函數(shù)調(diào)用加;構(gòu)成)如:printf(“%d”,32+5);3.表達(dá)式語句(由一個表達(dá)式+;構(gòu)成)如:x=3;4.空語句(由一個;構(gòu)成):;5.復(fù)合語句(花括號括起的多個語句)如:{intx,y;x=2;y=3;}第18頁/共46頁20§3.4三種基本控制結(jié)構(gòu)程序設(shè)計第19頁/共46頁21§3.3.1
順序結(jié)構(gòu)程序設(shè)計
(按語句出現(xiàn)的先后順序執(zhí)行,高教習(xí)題)例1.從終端輸入三角形三邊的值(假設(shè)能構(gòu)成三角形),求三角形的面積.設(shè)a,b,c,s,area分別為三邊,半周長和面積,則
area=s=(a+b+c)/2框圖和程序如下:第20頁/共46頁22
開始輸入a,b,c
(a+b+c)/2
s
area
輸出area
結(jié)束#include<math.h>main(){floata,b,c,s,area;printf(“Inputa,b,c:\n”);
scanf(“%f%f%f”,&a,&b,&c);s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area=%f\n”,area);}第21頁/共46頁23§3.3.2分支結(jié)構(gòu)程序設(shè)計(根據(jù)一定的條件有選擇地執(zhí)行)一、if語句的三種形式1.if(表達(dá)式)語句__單分支結(jié)構(gòu)
表達(dá)式
0
非0語句如:if(x>y)z=x;說明:①格式中的”語句”稱為if語句的內(nèi)嵌語句.②內(nèi)嵌語句只能是一個語句;若有多個,應(yīng)用大括號括起來,成為一個復(fù)合語句.if(x>y){z=x;x=y;}第22頁/共46頁24③內(nèi)嵌語句可以是空語句.if(x>y)
;
特別:if(x>y)z=x;
可以寫成:if(x>y)
z=x;
但不能寫成:
if(x>y);
z=x;
④格式中的”表達(dá)式”
一般是表示條件的邏輯表達(dá)式或關(guān)系表達(dá)式,但它可以是任意的數(shù)值類型的表達(dá)式(整型,實型,字符型等)
如if(32)printf(“OK!\n”);if(‘a(chǎn)’)printf(“%d\n”,’a’);都是正確的
第23頁/共46頁25例2.輸入二整數(shù),求a,b中的最大值,并放在maxv中。main(){inta,b,maxv;scanf(“%d%d”,&a,&b);maxv=a;
if(a<b)maxv=b;printf(“max=%d\n”,maxv);}
開始輸入a,bamaxv
a<b
非0bmaxv
輸出maxv
結(jié)束0成本P29例3.4第24頁/共46頁26例3.輸入三個數(shù),使它們按由小到大的順序輸出.三個數(shù)由x,y,z輸入temp為中間變量按比較交換法排序板書算法框圖根據(jù)框圖寫出程序如右main(){floatex,y,z,temp;
scanf(“%f%f%f”,&x,&y,&z);
if(x>y){temp=x;x=y;y=temp;}if(x>z){temp=x;x=z;z=temp;}if(y>z){temp=y;y=z;z=temp;}Printf(“%f,%f,%f\n”,x,y,z);}成本P30例3.6,高教習(xí)題第25頁/共46頁272.if_else(二分支結(jié)構(gòu))
格式:if(表達(dá)式)語句1else語句2
功能:
根據(jù)條件控制程序流程
表達(dá)式
語句1語句2非00說明:①格式中if語句,else語句的內(nèi)嵌語句均可以是空語句,也可以是復(fù)合語句,還可以是分支語句②語句1與語句2只能被執(zhí)行其一.第26頁/共46頁28例4.用if_else結(jié)構(gòu)改寫例2中的程序main(){inta,b,maxv;scanf(“%d%d”,&a,&b);
if(a<b)maxv=b;
elsemaxv=a;printf(“max=%d\n”,maxv);}思考:①如果第五行中沒有else會怎樣?
②可否將if和else的內(nèi)嵌語句改為輸出語句?第27頁/共46頁29例5.(高教P69例3.3)例6.(新清華P95例5.3)有一函數(shù):輸入一個x值,輸出相應(yīng)的y值.以下程序中哪些能輸出正確結(jié)果?Why?程序1:main(){intx,y;scanf(“%d”,&x);
if(x<0)y=-1;elseif(x==0)y=0;elsey=1;printf(“%d,%d\n”,x,y);}程序2:將程序1中的if語句改為:if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;第28頁/共46頁30程序3:將程序1中的if
語句改為:y=-1;if(x!=0)if(x>0)y=1;elsey=0;程序4:將程序1中的if
語句改為:y=0;if(x>=0)if(x>0)y=1;elsey=-1;分析之,并據(jù)程序畫出相應(yīng)的框圖.注意:
①
if和else的內(nèi)嵌語句后都必須有分號;②
else子句不能單獨使用,必須與if語句配對使用:從最內(nèi)層開始,與前面最近的if配對.
高教P70例3.4第29頁/共46頁313.if_elseif(多分支結(jié)構(gòu))格式:if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2elseif(表達(dá)式3)語句3
…………
elseif(表達(dá)式n-1)語句n-1
else語句n第30頁/共46頁32功能:根據(jù)條件控制程序流程
表達(dá)式1
表達(dá)式2
表達(dá)式n-1
語句1語句2語句n-1語句n………非00非0非0000第31頁/共46頁33例7.某運輸公司運費規(guī)定如下(cost為運費,x為距離)0x≤500.05x>50cost=0.075x>1000.10x>3000.15x>500根據(jù)距離遠(yuǎn)近,輸出運費.程序如右:main(){intx;floatcost;scanf(“%f”,&x);if(x<=50)cost=0;elseif(x<=100)cost=0.05;
elseif(x<=300)cost=0.075;
elseif(x<=500)cost=0.10;
elsecost=0.15;printf(“%d,%f\n”,x,cost);
}思考:該程序中的if結(jié)構(gòu)可否有其他表述形式?第32頁/共46頁34例8(成本P36例3.11)輸入一個簡單表達(dá)式,形如:
操作數(shù)運算符操作數(shù)如:32*56
輸出該表達(dá)式的值。
main(){floatvalue1,value2;charoperator;printf(“typeinyourxpresssion.\n”);scanf(“%f%d%f”,&value1,&operator,&value2);第33頁/共46頁35if(operator==‘+’)printf(“%f\n”,value1+value2);else
if(operator==‘-’)printf(“%f\n”,value1-value2);
elseif(operator==‘*’)printf(“%f\n”,value1*value2);
elseif(operator==‘/’)if(value2==0)printf(“divisionbyzero.\n”);elseprintf(“%f\n”,value1/value2);
elseprintf(“unknwonoperator.\n”);}第34頁/共46頁36說明:①格式中if語句,else語句的內(nèi)嵌語句均可以是空語句,也可以是復(fù)合語句,還可以是分支語句②語句1,語句2,……,語句n只能被執(zhí)行其一.③if和else的內(nèi)嵌語句后都必須有分號;④
else子句不能單獨使用,必須與if語句配對使用:從最內(nèi)層開始,與前面最近的if配對.⑤當(dāng)if或else后又含有一個或多個if語句時,稱為if語句的嵌套第35頁/共46頁37二、if語句的嵌套一般形式如下:if(){……if()語句1else語句2
……}else{……if()語句1else語句2
……}內(nèi)嵌if內(nèi)嵌if例.下面程序段試圖使第三行的else與第一行的if配對,能否實現(xiàn)?怎樣實現(xiàn)?if()if()語句1elseif()語句2else語句3高教P70例3.4與此例類似,其正確程序見P72第36頁/共46頁38對于if語句的嵌套,應(yīng)特別注意else與if的配對關(guān)系:從最內(nèi)層開始,else與前面最近的if配對.一般應(yīng)遵循如下原則:①內(nèi)嵌的if語句最好含有相應(yīng)的else語句,使if和else的數(shù)目相同,一一對應(yīng)。
例9:高教P72例3.5or
清華P59例5.3程序1②如果if和else的數(shù)目不相同,可使用大括號來確定配對關(guān)系。
如上例和高教P72例3.4的正確程序③只嵌套在else子句中,構(gòu)成if_elseif結(jié)構(gòu)。高教P74例3.6第37頁/共46頁39三、switch語句格式:
switch(表達(dá)式){case常量表達(dá)式1:語句1case常量表達(dá)式2:語句2
………………case常量表達(dá)式n:語句ndefault:語句n+1}第38頁/共46頁40說明:①switch后的表達(dá)式可以是整型字符型和枚舉型數(shù)據(jù)②各case后的表達(dá)式必須為常量表達(dá)式;
如:可以3+6,但不可以3+x③各case子句后的語句i可以是空語句,也可以是復(fù)合語句,并可缺省其大括號;
如:case‘A’:x=90;printf(“%d”,x);④各case子句的前后順序可以任意;⑤
default子句可以沒有;⑥一個switch結(jié)構(gòu)的case子句和default子句必須用大括號整體擴起來。第39頁/共46頁41功能:根據(jù)switch后表達(dá)式的值是否與某case
后常量表達(dá)式的值相等,確定程序流程NS圖:表達(dá)式常量表達(dá)式1常量表達(dá)式2……常量表達(dá)式n否則語句1,……語句n+1語句2,……語句n+1……語句n,語句n+1語句n+1第40頁/共46頁42注意:
①任二case子句后的常量表達(dá)式的值不相等,否則會導(dǎo)致相同條件出現(xiàn)兩種甚至多種執(zhí)行方案的矛盾②多個case子句可共用一組執(zhí)行語句;且除該組最后一case子句,前面若干case子句的執(zhí)行語句可缺省不寫如:…………case‘A’:case‘B’:case‘C’:printf(“>60\n”);break;…………第41頁/共46頁43③執(zhí)行完一個case子句后,流程轉(zhuǎn)移到下一case子句繼續(xù)執(zhí)行,若只需執(zhí)行一個語句后退出switch結(jié)構(gòu),可以在該case子句的執(zhí)行語句序列最后使用break語句。例10.清華P75例3.7main(){floatvalue1,value2;charoperator;printf(“typeinyourexpresssion.\n”);scanf(“%f%d%f”,&value1,&operator,&value2);例11.(用switch結(jié)構(gòu)改寫例8)
第42頁/共46頁44{case’+’:printf(“%f\n”,value1+value2);break;case’-’:printf(“%f\n”,value1-value2);break;case’*’:prin
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)境管理在企業(yè)發(fā)展中的作用研究
- 生產(chǎn)流程優(yōu)化基于數(shù)據(jù)的決策支持方案
- 珠寶鑒定與法律法規(guī)關(guān)系解析
- 安保安全措施方案
- 2023九年級化學(xué)下冊 第九章 現(xiàn)在生活與化學(xué)9.4 化學(xué)物質(zhì)與健康第3課時 治病用的藥品、防范有害化學(xué)物質(zhì)、保護身體健康說課稿 科粵版
- Unit1 Making friends Part A Letters and sounds(說課稿)-2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- 3 學(xué)習(xí)有方法 說課稿-2024-2025學(xué)年道德與法治三年級上冊統(tǒng)編版
- Unit 3 Fascinating parks Discover Useful Structures 說課稿 -2024-2025學(xué)年高中英語人教版(2019)選擇性必修第一冊
- 《2 拉拉手交朋友》說課稿-2023-2024學(xué)年道德與法治一年級上冊統(tǒng)編版
- 2023六年級數(shù)學(xué)上冊 三 分?jǐn)?shù)除法 1分?jǐn)?shù)除法第1課時 倒數(shù)的認(rèn)識說課稿 西師大版
- 小學(xué)主題班會教學(xué)設(shè)計-《給你點個“贊”》通用版
- 【教學(xué)創(chuàng)新大賽】《系統(tǒng)解剖學(xué)》教學(xué)創(chuàng)新成果報告
- 賽意EAM設(shè)備管理IOT解決方案
- 氫氰酸安全技術(shù)說明書MSDS
- 動物檢疫技術(shù)-動物檢疫的范圍(動物防疫與檢疫技術(shù))
- 比較思想政治教育學(xué)
- 醫(yī)用內(nèi)窺鏡冷光源產(chǎn)品技術(shù)要求深圳邁瑞
- 砌墻磚和砌塊檢測作業(yè)指導(dǎo)書
- 護理教學(xué)查房評分標(biāo)準(zhǔn)
- GB/T 23505-2017石油天然氣工業(yè)鉆機和修井機
- 人工智能發(fā)展史課件
評論
0/150
提交評論