C語言第3-4章 順序結(jié)構(gòu)_第1頁
C語言第3-4章 順序結(jié)構(gòu)_第2頁
C語言第3-4章 順序結(jié)構(gòu)_第3頁
C語言第3-4章 順序結(jié)構(gòu)_第4頁
C語言第3-4章 順序結(jié)構(gòu)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第3章結(jié)構(gòu)程序設(shè)計(jì)1結(jié)構(gòu)化程序設(shè)計(jì)(1)一.程序設(shè)計(jì)方法學(xué)

1.程序設(shè)計(jì)方法學(xué)是以程序設(shè)計(jì)方法為研究對(duì)象的學(xué)科。

2.它是針對(duì)某一領(lǐng)域或某一領(lǐng)域的特定一類問題所用的一整套特定程序設(shè)計(jì)方法所構(gòu)成的體系。如結(jié)構(gòu)化程序設(shè)計(jì)方法學(xué)、邏輯式程序設(shè)計(jì)方法學(xué)、函數(shù)式程序設(shè)計(jì)方法學(xué)和面向?qū)ο蟪绦蛟O(shè)計(jì)方法學(xué)等。2結(jié)構(gòu)化程序設(shè)計(jì)(2)二.結(jié)構(gòu)化程序設(shè)計(jì)是一種特定的程序設(shè)計(jì)方法學(xué),它是一種結(jié)構(gòu)性的編程方法。結(jié)構(gòu)性反映如下:

1.編程過程采用的是“自頂向下、逐步求精”的方法;

2.按模塊組裝的方法編程,即將所需程序編制成只含順序結(jié)構(gòu)、選擇結(jié)構(gòu)及循環(huán)結(jié)構(gòu),其中每一個(gè)結(jié)構(gòu)只容許一個(gè)入口和一個(gè)出口。

3.為實(shí)現(xiàn)所編程序的單入口和單出口,采用三種基本控制結(jié)構(gòu)。3結(jié)構(gòu)化程序設(shè)計(jì)(3)三.結(jié)構(gòu)化程序設(shè)計(jì)的三種基本控制結(jié)構(gòu)順序結(jié)構(gòu)AB選擇結(jié)構(gòu)expABTF循環(huán)結(jié)構(gòu)expATF4結(jié)構(gòu)化程序設(shè)計(jì)(4)四.結(jié)構(gòu)化程序設(shè)計(jì)的優(yōu)點(diǎn)

1.每一步只優(yōu)先處理當(dāng)前最需要細(xì)化的部分,其余部分推遲到適當(dāng)?shù)臅r(shí)機(jī)再考慮。先后有序,主次分明;

2.易于驗(yàn)證程序的正確性;

3.“結(jié)構(gòu)化”保證程序的清晰易讀,“逐步細(xì)化”實(shí)現(xiàn)程序的正確可靠。5結(jié)構(gòu)化程序設(shè)計(jì)(5)五.逐步細(xì)化的實(shí)現(xiàn)步驟

1.由粗到細(xì)對(duì)程序進(jìn)行逐步細(xì)化;

2.在細(xì)化程序的過程中,同時(shí)對(duì)數(shù)據(jù)的描述細(xì)化;

3.每一步細(xì)化均使用相同的結(jié)構(gòu)化語言,最后一步一般直接用偽代碼來描述,以便編碼時(shí)直接譯為源程序。6結(jié)構(gòu)化程序設(shè)計(jì)(6)例:在一組數(shù)中找出其中最大的數(shù)問題求解逐步細(xì)化的過程求解步驟細(xì)化第二步結(jié)構(gòu)化語言描述1輸入一組數(shù);1輸入一個(gè)數(shù)組;1輸入一個(gè)數(shù)組;2找出其中的最大數(shù);2.1任取一數(shù),假定它就是最大數(shù);2.2將該數(shù)與其余各數(shù)逐一比較;2.3若發(fā)現(xiàn)任何數(shù)大于假設(shè)的最大數(shù),即取而代之;2.1令”最大數(shù)”=數(shù)組的第一個(gè)元素;2.2從第二個(gè)元素至最后一個(gè)元素做循環(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ù)”一文,提出了這種新方法,其特點(diǎn)是結(jié)構(gòu)緊湊,占用篇幅小。使用符號(hào)如下:ABPFTABPFTAwhilePdoAdo-untilPAP=1=2…=nA1A2…An順序型選擇型(1)選擇型(2)當(dāng)型循環(huán)直到型循環(huán)多分支選擇型A調(diào)用子程序10第4章順序程序設(shè)計(jì)11C語句概述C語言的語句概述:C程序?qū)?shù)據(jù)的處理是通過“語句”的執(zhí)行來實(shí)現(xiàn)的。一條語句完成一項(xiàng)操作(或功能)。一個(gè)為實(shí)現(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á)式;分號(hào)(;)是語句結(jié)束的標(biāo)志功能:計(jì)算表達(dá)式或改變變量的值。分類:運(yùn)算符表達(dá)式語句賦值語句

14運(yùn)算符表達(dá)式語句運(yùn)算符表達(dá)式后跟一個(gè)分號(hào)組成例:5;i++;語句的功能是,變量i的值增1。a=3,b=a+2,c=a+1;/*由三個(gè)賦值語句組成的逗號(hào)表達(dá)式語句。*/(1)a+b; /*算術(shù)表達(dá)式語句,計(jì)算a與b之和。*/15賦值語句賦值表達(dá)式后跟一個(gè)分號(hào)組成(2)例:x=y+z;/*計(jì)算y+z的和并賦值給變量x。*/x=2;y=3;

162.函數(shù)調(diào)用語句由函數(shù)調(diào)用表達(dá)式后跟一個(gè)分號(hào)組成格式:函數(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)為了完成某項(xiàng)任務(wù),而不是為了得到返回值。在表達(dá)式中調(diào)用函數(shù),實(shí)際上是轉(zhuǎn)去執(zhí)行一段預(yù)先設(shè)計(jì)好的程序,求出結(jié)果后返回調(diào)用點(diǎn)。所以函數(shù)的值又叫函數(shù)的返回值。調(diào)用這類函數(shù)時(shí),就直接用函數(shù)調(diào)用語句。例:scanf("%f",&x);printf("%f",x);18復(fù)合語句一對(duì)大括號(hào){}包圍若干條語句組成。格式:

{[數(shù)據(jù)說明部分;]

執(zhí)行語句部分;

}注意:(1)在復(fù)合語句中的“內(nèi)部數(shù)據(jù)描述語句”中定義的變量,是局部變量,僅在復(fù)合語句中有效。(2)復(fù)合語句結(jié)束的“}”之后,不需要分號(hào)。(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);}程序運(yùn)行結(jié)果a=11b=21c=31a=11b=22c=3.300000a=22b=21c=3120空語句空語句就是一個(gè)分號(hào)。格式:;功能:執(zhí)行該語句不做任何操作21格式:putchar(c)參數(shù):c為字符常量、變量或表達(dá)式功能:把c的值輸出到顯示器上數(shù)據(jù)輸出C語言無I/O語句,I/O操作由函數(shù)實(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);}運(yùn)行結(jié)果:AB例23格式:printf(“格式控制串”,輸出表)功能:按指定格式向顯示器輸出數(shù)據(jù)格式輸出函數(shù)輸出表:要輸出的數(shù)據(jù)(可以沒有,多個(gè)時(shí)以“,”分隔)格式控制串:包含兩種信息格式說明:%[修飾符]格式字符

,用于指定輸出格式普通字符或轉(zhuǎn)義序列:原樣輸出格式字符除格式字符外的任意字符24d,ix,Xoucse,EfGg%%格式字符:十六進(jìn)制無符號(hào)整數(shù)不帶符號(hào)十進(jìn)制整數(shù)十進(jìn)制整數(shù)指數(shù)形式浮點(diǎn)小數(shù)單一字符字符串八進(jìn)制無符號(hào)整數(shù)小數(shù)形式浮點(diǎn)小數(shù)e和f中較短一種百分號(hào)本身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外,其他格式字符要用小寫格式字符與輸出項(xiàng)個(gè)數(shù)應(yīng)相同,按先后順序一一對(duì)應(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對(duì)實(shí)數(shù),指定小數(shù)點(diǎn)后位數(shù)(四舍五入)對(duì)字符串,指定實(shí)際輸出位數(shù)修飾符功能m輸出數(shù)據(jù)域?qū)?數(shù)據(jù)長度<m,左補(bǔ)空格;否則按實(shí)際輸出輸出數(shù)據(jù)在域內(nèi)左對(duì)齊(缺省右對(duì)齊)-指定在有符號(hào)數(shù)的正數(shù)前顯示正號(hào)(+)+在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);運(yùn)行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);運(yùn)行結(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);運(yùn)行結(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);}運(yùn)行結(jié)果:Enteracharacter:AA--->hex41數(shù)據(jù)輸入字符輸入函數(shù)29格式輸入函數(shù)格式:scanf(“格式控制串”,地址表)功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指定的存儲(chǔ)單元中,并按回車鍵結(jié)束地址表:變量的地址,常用取地址運(yùn)算符&格式字符: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ù)指定輸入數(shù)據(jù)寬度,遇空格或不可轉(zhuǎn)換字符則結(jié)束抑制符,跳過,指定輸入項(xiàng)讀入后不賦給變量例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或回車鍵作為分隔符其它字符做分隔符:格式串中兩個(gè)格式符間字符例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”格式符時(shí),空格和轉(zhuǎn)義字符作為有效字符輸入如scanf(“%c%c%c”,&c1,&c2,&c3);

若輸入abc

則ac1,

c2,bc3輸入數(shù)據(jù)時(shí),遇以下情況認(rèn)為該數(shù)據(jù)結(jié)束:遇空格、TAB、或回車遇寬度結(jié)束遇非法輸入如scanf(“%d%c%f”,&a,&b,&c);

若輸入1234a123o.26

則1234a,‘a(chǎn)’b,123c33注意事項(xiàng):scanf()的格式控制字符串中沒有轉(zhuǎn)義字符。如scanf(“%d\n”,&a);是錯(cuò)誤的。scanf()的格式控制字符串中的普通字符不是用來顯示的,而是輸入時(shí)要求照普通字符輸入的。scanf()中參數(shù)的第二部分一定是地址列表,不能是表達(dá)式。34程序舉例/*ch4_12.c*/#include<math.h>#inc

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論