版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章結(jié)構(gòu)程序設(shè)計1結(jié)構(gòu)化程序設(shè)計(1)一.程序設(shè)計方法學(xué)
1.程序設(shè)計方法學(xué)是以程序設(shè)計方法為研究對象的學(xué)科。
2.它是針對某一領(lǐng)域或某一領(lǐng)域的特定一類問題所用的一整套特定程序設(shè)計方法所構(gòu)成的體系。如結(jié)構(gòu)化程序設(shè)計方法學(xué)、邏輯式程序設(shè)計方法學(xué)、函數(shù)式程序設(shè)計方法學(xué)和面向?qū)ο蟪绦蛟O(shè)計方法學(xué)等。2結(jié)構(gòu)化程序設(shè)計(2)二.結(jié)構(gòu)化程序設(shè)計是一種特定的程序設(shè)計方法學(xué),它是一種結(jié)構(gòu)性的編程方法。結(jié)構(gòu)性反映如下:
1.編程過程采用的是“自頂向下、逐步求精”的方法;
2.按模塊組裝的方法編程,即將所需程序編制成只含順序結(jié)構(gòu)、選擇結(jié)構(gòu)及循環(huán)結(jié)構(gòu),其中每一個結(jié)構(gòu)只容許一個入口和一個出口。
3.為實現(xiàn)所編程序的單入口和單出口,采用三種基本控制結(jié)構(gòu)。3結(jié)構(gòu)化程序設(shè)計(3)三.結(jié)構(gòu)化程序設(shè)計的三種基本控制結(jié)構(gòu)順序結(jié)構(gòu)AB選擇結(jié)構(gòu)expABTF循環(huán)結(jié)構(gòu)expATF4結(jié)構(gòu)化程序設(shè)計(4)四.結(jié)構(gòu)化程序設(shè)計的優(yōu)點
1.每一步只優(yōu)先處理當(dāng)前最需要細(xì)化的部分,其余部分推遲到適當(dāng)?shù)臅r機再考慮。先后有序,主次分明;
2.易于驗證程序的正確性;
3.“結(jié)構(gòu)化”保證程序的清晰易讀,“逐步細(xì)化”實現(xiàn)程序的正確可靠。5結(jié)構(gòu)化程序設(shè)計(5)五.逐步細(xì)化的實現(xiàn)步驟
1.由粗到細(xì)對程序進(jìn)行逐步細(xì)化;
2.在細(xì)化程序的過程中,同時對數(shù)據(jù)的描述細(xì)化;
3.每一步細(xì)化均使用相同的結(jié)構(gòu)化語言,最后一步一般直接用偽代碼來描述,以便編碼時直接譯為源程序。6結(jié)構(gòu)化程序設(shè)計(6)例:在一組數(shù)中找出其中最大的數(shù)問題求解逐步細(xì)化的過程求解步驟細(xì)化第二步結(jié)構(gòu)化語言描述1輸入一組數(shù);1輸入一個數(shù)組;1輸入一個數(shù)組;2找出其中的最大數(shù);2.1任取一數(shù),假定它就是最大數(shù);2.2將該數(shù)與其余各數(shù)逐一比較;2.3若發(fā)現(xiàn)任何數(shù)大于假設(shè)的最大數(shù),即取而代之;2.1令”最大數(shù)”=數(shù)組的第一個元素;2.2從第二個元素至最后一個元素做循環(huán);2.3如果新元素>“最大數(shù)”則“最大數(shù)”=新元素;3輸出最大數(shù)3輸出最大數(shù)3輸出“最大數(shù)”。7程序流程圖(PFD)例1求1-100的累加和
s累加和
n初值
N否(假)
Y是(真)s=1;n=1n<=100?n=n+1s=s+n顯示s結(jié)束NY開始主要工具(1)89主要工具(2)盒圖
(N-S圖)1973年,Nassi
和Shneiderman
發(fā)表了“結(jié)構(gòu)化程序的流程圖技術(shù)”一文,提出了這種新方法,其特點是結(jié)構(gòu)緊湊,占用篇幅小。使用符號如下:ABPFTABPFTAwhilePdoAdo-untilPAP=1=2…=nA1A2…An順序型選擇型(1)選擇型(2)當(dāng)型循環(huán)直到型循環(huán)多分支選擇型A調(diào)用子程序10第4章順序程序設(shè)計11C語句概述C語言的語句概述:C程序?qū)?shù)據(jù)的處理是通過“語句”的執(zhí)行來實現(xiàn)的。一條語句完成一項操作(或功能)。一個為實現(xiàn)特定目的的程序應(yīng)包含若干條語句。
12表達(dá)式語句(表達(dá)式;)簡單語句函數(shù)調(diào)用語句(函數(shù)名(參數(shù)表);空語句(;)
C語言數(shù)據(jù)操作復(fù)合語句({一條或多條語句})語句條件語句(if語句,switch語句)結(jié)構(gòu)化語句while語句循環(huán)語句do_while語句
for語句流程控制語句break語句限定轉(zhuǎn)向語句continue語句非結(jié)構(gòu)化語句return語句非限定轉(zhuǎn)向語句(goto語句)C語言的語句分類:第三章3.1C語句概述13簡單語句1.表達(dá)式語句由表達(dá)式組成的語句稱為表達(dá)式語句語句格式:表達(dá)式;分號(;)是語句結(jié)束的標(biāo)志功能:計算表達(dá)式或改變變量的值。分類:運算符表達(dá)式語句賦值語句
14運算符表達(dá)式語句運算符表達(dá)式后跟一個分號組成例:5;i++;語句的功能是,變量i的值增1。a=3,b=a+2,c=a+1;/*由三個賦值語句組成的逗號表達(dá)式語句。*/(1)a+b; /*算術(shù)表達(dá)式語句,計算a與b之和。*/15賦值語句賦值表達(dá)式后跟一個分號組成(2)例:x=y+z;/*計算y+z的和并賦值給變量x。*/x=2;y=3;
162.函數(shù)調(diào)用語句由函數(shù)調(diào)用表達(dá)式后跟一個分號組成格式:函數(shù)名(參數(shù)列表);分類:標(biāo)準(zhǔn)庫函數(shù)用戶定義函數(shù)標(biāo)準(zhǔn)庫函數(shù)調(diào)用原則:(1)要在程序中包含相應(yīng)的頭文件(2)調(diào)用的一般形式:函數(shù)名(參數(shù)列表);17標(biāo)準(zhǔn)函數(shù)調(diào)用的目的(1)如數(shù)學(xué)函數(shù),為了得到函數(shù)的返回值。這類函數(shù)的調(diào)用一般出現(xiàn)在表達(dá)式中,作為表達(dá)式語句的一部分。一般不作為函數(shù)調(diào)用語句。(2)為了完成某項任務(wù),而不是為了得到返回值。在表達(dá)式中調(diào)用函數(shù),實際上是轉(zhuǎn)去執(zhí)行一段預(yù)先設(shè)計好的程序,求出結(jié)果后返回調(diào)用點。所以函數(shù)的值又叫函數(shù)的返回值。調(diào)用這類函數(shù)時,就直接用函數(shù)調(diào)用語句。例:scanf("%f",&x);printf("%f",x);18復(fù)合語句一對大括號{}包圍若干條語句組成。格式:
{[數(shù)據(jù)說明部分;]
執(zhí)行語句部分;
}注意:(1)在復(fù)合語句中的“內(nèi)部數(shù)據(jù)描述語句”中定義的變量,是局部變量,僅在復(fù)合語句中有效。(2)復(fù)合語句結(jié)束的“}”之后,不需要分號。(3)復(fù)合語句可以出現(xiàn)在任何數(shù)據(jù)操作語句可以出現(xiàn)的地方。19例5-1:#include"stdio.h"voidmain(){inta=11,b=21,c=31;
printf("a=%d\tb=%d\tc=%d\n",a,b,c);{intb=22;floatc=3.3;
printf("a=%d\tb=%d\tc=%f\n",a,b,c);a=b;}
printf("a=%d\tb=%d\tc=%d\n",a,b,c);}程序運行結(jié)果a=11b=21c=31a=11b=22c=3.300000a=22b=21c=3120空語句空語句就是一個分號。格式:;功能:執(zhí)行該語句不做任何操作21格式:putchar(c)參數(shù):c為字符常量、變量或表達(dá)式功能:把c的值輸出到顯示器上數(shù)據(jù)輸出C語言無I/O語句,I/O操作由函數(shù)實現(xiàn)#include<stdio.h>字符輸出函數(shù)22/*ch4_1.c*/#include<stdio.h>main(){intc;chara;c=65;a='B';
putchar(c);putchar('\n');putchar(a);}運行結(jié)果:AB例23格式:printf(“格式控制串”,輸出表)功能:按指定格式向顯示器輸出數(shù)據(jù)格式輸出函數(shù)輸出表:要輸出的數(shù)據(jù)(可以沒有,多個時以“,”分隔)格式控制串:包含兩種信息格式說明:%[修飾符]格式字符
,用于指定輸出格式普通字符或轉(zhuǎn)義序列:原樣輸出格式字符除格式字符外的任意字符24d,ix,Xoucse,EfGg%%格式字符:十六進(jìn)制無符號整數(shù)不帶符號十進(jìn)制整數(shù)十進(jìn)制整數(shù)指數(shù)形式浮點小數(shù)單一字符字符串八進(jìn)制無符號整數(shù)小數(shù)形式浮點小數(shù)e和f中較短一種百分號本身inta=567;printf(“%d”,a);inta=255;printf(“%x”,a);inta=65;printf(“%o”,a);inta=567;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%%”);567ff101567AABC5.677890e+002567.789000567.789%說明 除X、E、G外,其他格式字符要用小寫格式字符與輸出項個數(shù)應(yīng)相同,按先后順序一一對應(yīng)例
main(){unsignedintu=65535;
printf(”u=%d\n",u);}
輸出結(jié)果:u=-1例inta=3,b=4;
printf(“%d%d\n”,a,b);
printf(“a=%d,b=%d\n”,a,b);
例inta=3,b=4;
printf(“%d%d\n”,a,b);
printf(“a=%d,b=%d\n”,a,b);輸出結(jié)果:34a=3,b=41111
11
11
11
11
11
116553525附加格式說明符(修飾符).n對實數(shù),指定小數(shù)點后位數(shù)(四舍五入)對字符串,指定實際輸出位數(shù)修飾符功能m輸出數(shù)據(jù)域?qū)?數(shù)據(jù)長度<m,左補空格;否則按實際輸出輸出數(shù)據(jù)在域內(nèi)左對齊(缺省右對齊)-指定在有符號數(shù)的正數(shù)前顯示正號(+)+在d,o,x,u前,指定輸出精度為long型在e,f,g前,指定輸出精度為double型l26例inta=1234;floatf=123.456;charch=‘a(chǎn)’;printf(“%8d,%2d\n”,a,a);printf(“%f,%8.1f,%.2f,%.2e\n”,f,f,f,f);printf(“%3c\n”,ch);運行1234,1234結(jié)果:123.456000,123.5,123.46,1.23e+02
a例chara[]=“Hello,world!”printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a);運行結(jié)果:Hello,world!
Hello,world!
HelloHelloHel
例m.n27例inta=1234;floatf=123.456;staticcharc[]=“Hello,world!”;printf(“%8d,%-8d\n”,a,a);printf(“%10.2f,%-10.1f\n”,f,f);printf(“%10.5s,%-10.3s\n”,c,c);運行結(jié)果:1234,1234
123.46,123.5
Hello,Hel例-28格式:getchar()功能:從鍵盤讀一字符例/*ch4_4.c*/#include<stdio.h>main(){intc;
printf("Enteracharacter:");c=getchar();
printf("%c--->hex%x\n",c,c);}運行結(jié)果:Enteracharacter:AA--->hex41數(shù)據(jù)輸入字符輸入函數(shù)29格式輸入函數(shù)格式:scanf(“格式控制串”,地址表)功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指定的存儲單元中,并按回車鍵結(jié)束地址表:變量的地址,常用取地址運算符&格式字符:d,i,o,x,u,c,s,f,e例scanf(“%d”,&a);
輸入:10
則a=10例scanf(“%x”,&a);
輸入:11
則a=1730附加格式說明符(修飾符)l修飾符功能hm*用于d,o,x前,指定輸入為short型整數(shù)用于d,o,x前,指定輸入為long型整數(shù)用于e,f前,指定輸入為double型實數(shù)指定輸入數(shù)據(jù)寬度,遇空格或不可轉(zhuǎn)換字符則結(jié)束抑制符,跳過,指定輸入項讀入后不賦給變量例scanf(“%4d%2d%2d”,&yy,&mm,&dd);
輸入19991015
則1999yy,10mm,15dd例scanf(“%3d%*4d%f”,&k,&f);
輸入12345678765.43
則123k,8765.43f例scanf(“%2d%*3d%2d”,&a,&b);
輸入1234567
則12a,67b例scanf(“%3c%2c”,&c1,&c2);
輸入abcde
則‘a(chǎn)’c1,‘d’c231輸入分隔符的指定一般以空格、TAB或回車鍵作為分隔符其它字符做分隔符:格式串中兩個格式符間字符例scanf(“%d%o%x”,&a,&b,&c);
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
輸入123123123
輸出a=123,b=83,c=291例scanf(“%d:%d:%d”,&h,&m,&s);
輸入12:30:45
則12h,30m,45s例scanf(“%d,%d”,&a,&b)
輸入3,4
則3a,4b例scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);
輸入a=12,b=24,c=3632說明:用“%c”格式符時,空格和轉(zhuǎn)義字符作為有效字符輸入如scanf(“%c%c%c”,&c1,&c2,&c3);
若輸入abc
則ac1,
c2,bc3輸入數(shù)據(jù)時,遇以下情況認(rèn)為該數(shù)據(jù)結(jié)束:遇空格、TAB、或回車遇寬度結(jié)束遇非法輸入如scanf(“%d%c%f”,&a,&b,&c);
若輸入1234a123o.26
則1234a,‘a(chǎn)’b,123c33注意事項:scanf()的格式控制字符串中沒有轉(zhuǎn)義字符。如scanf(“%d\n”,&a);是錯誤的。scanf()的格式控制字符串中的普通字符不是用來顯示的,而是輸入時要求照普通字符輸入的。scanf()中參數(shù)的第二部分一定是地址列表,不能是表達(dá)式。34程序舉例/*ch4_12.c*/#include<math.h>#inc
溫馨提示
- 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年徐州從業(yè)資格證貨運考試答案
- 2025年婁底貨運從業(yè)資格證考試內(nèi)容
- 2025年貨運從業(yè)資格證模擬考試0題
- 2025年吉安運輸從業(yè)資格證考試試題庫
- 第二章運動與能量練習(xí)2023-2024學(xué)年教科版物理八年級上冊
- 軟件公司員工手冊
- 智能控制規(guī)劃服務(wù)承諾書
- 實驗室安全防護(hù)設(shè)施配置與維護(hù)
- 商業(yè)活動臨時化妝師聘用書
- 商標(biāo)使用許可合同范本
- 國際疾病分類手術(shù)碼(ICD-9-CM-3)使用手冊
- 物資部對標(biāo)管理實施方案
- 上海工程技術(shù)大學(xué)《管理信息系統(tǒng)》 ~學(xué)年 第 一 學(xué)期 實驗報告
- 職工醫(yī)?;鶖?shù)調(diào)整對比明細(xì)表Excel模板
- 送你一個字評語2022
- 放射科優(yōu)質(zhì)護(hù)理服務(wù)PPT學(xué)習(xí)教案
- GB_T 22627-2022水處理劑 聚氯化鋁_(高清-最新版)
- 教學(xué)團(tuán)隊建設(shè)總結(jié)報告
- 破產(chǎn)法PPT課件
- 看守所釋放證明書
- 魚骨圖-PPT模板
評論
0/150
提交評論