版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第3章 程序設(shè)計結(jié)構(gòu),第3章 程序設(shè)計結(jié)構(gòu),本章內(nèi)容,3.2 順序結(jié)構(gòu),3.3 選擇結(jié)構(gòu),3.4 循環(huán)結(jié)構(gòu),3.1 程序設(shè)計結(jié)構(gòu)的基本概念,3.5 輔助控制語句,3.1 程序設(shè)計結(jié)構(gòu)的基本概念,本節(jié)內(nèi)容,3.1.2 程序設(shè)計的三種基本結(jié)構(gòu),3.1.3 使用流程圖描述程序算法,3.1.4 C語句,3.1.1 機(jī)構(gòu)化程序設(shè)計的基本原則,3.1.1 機(jī)構(gòu)化程序設(shè)計的基本原則,結(jié)構(gòu)化程序設(shè)計是從宏觀角度描述程序設(shè)計。一個比較大的程序是由不同功能模塊構(gòu)成,每個模塊完成一定的功能,因此,可以說一個程序是由若干個模塊構(gòu)成,而每個模塊又是由三種程序設(shè)計結(jié)構(gòu)描述的。 結(jié)構(gòu)化程序設(shè)計強(qiáng)調(diào)程序設(shè)計風(fēng)格和程序結(jié)構(gòu)的規(guī)
2、范化,提倡清晰的結(jié)構(gòu)。 結(jié)構(gòu)化程序設(shè)計應(yīng)遵循下述原則: (1)自頂向下 (2)逐步細(xì)化 (3)模塊化設(shè)計 (4)結(jié)構(gòu)化編碼,3.1.2 程序設(shè)計的三種基本結(jié)構(gòu),3.1.2.1 順序結(jié)構(gòu) 按設(shè)定的順序一步一步的執(zhí)行操作步驟,直到完成全部工作。 3.1.2.2 選擇結(jié)構(gòu) 此結(jié)構(gòu)一定包含一個判斷,根據(jù)比較判斷結(jié)果的不同,執(zhí)行不同操作步驟,獲得不同的結(jié)果。 3.1.2.3 循環(huán)結(jié)構(gòu) 此結(jié)構(gòu)一定包含一個判斷,如果判斷結(jié)果滿足一定的條件,則反復(fù)執(zhí)行一段操作步驟,直到判斷結(jié)果不滿足條件為止 。,3.1.2 程序設(shè)計的三種基本結(jié)構(gòu),三種基本結(jié)構(gòu)有以下共同特點(diǎn): (1)只有一個入口。 (2)只有一個出口。 (3
3、)結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會被執(zhí)行到。 (4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”。,3.1.3 使用流程圖描述程序算法,編寫一個大一點(diǎn)的程序,在編寫代碼前,首先要寫出程序的算法。程序算法可以用自然語言、偽代碼或程序框圖來表示。 用程序流程圖來描述程設(shè)計的算法是比較通用的做法,程序流程圖就是用框圖來表示程序設(shè)計的算法。,3.1.4 C語句,在C語言程序設(shè)計中,是以語句為單位向計算機(jī)發(fā)出操作命令的,可以說語句是最小的程序設(shè)計單位,一個語句經(jīng)編譯后產(chǎn)生若干條機(jī)器指令。 一個實際的程序是由若干個語句構(gòu)成的。 C語言把語句分成5類,只有控制語句是系統(tǒng)提供的,其他語句都是程序設(shè)計人員根據(jù)具體操作給出的。,3.1.4 C
4、語句,(1)表達(dá)式語句。表達(dá)式語句由一個表達(dá)式加一個分號構(gòu)成,最典型的是,由賦值表達(dá)式構(gòu)成一個賦值語句。 例如: toothpaste =3.2 是一個賦值表達(dá)式,而 toothpaste =3.2; 是一個賦值語句。,3.1.4 C語句,(2)控制語句。控制語句用于完成一定的控制功能。 if()else (條件語句) for() (循環(huán)語句) while() (循環(huán)語句) dowhile() (循環(huán)語句) continue (結(jié)束本次循環(huán)語句) break (中止執(zhí)行switch或循環(huán)語句) switch (多分支選擇語句) goto (轉(zhuǎn)向語句) return (從函數(shù)返回語句),3.1.
5、4 C語句,(3)函數(shù)調(diào)用語句。函數(shù)調(diào)用語句由一個被調(diào)用函數(shù)加一個分號構(gòu)成,例如: printf(“This is a C statement of using function.”); (4)復(fù)合語句??梢杂冒岩唤M語句擴(kuò)起來構(gòu)成復(fù)合語句(又稱為分程序)。 (5)空語句。下面是一個空語句: ;,3.1.4 C語句,C程序中的數(shù)據(jù)類型定義、預(yù)處理命令及注釋行都不是語句。 C語言允許一行寫幾個語句,也允許一個語句拆開寫在幾行上,對書寫格式?jīng)]有固定要求,為了讀寫程序的方便,在書寫程序時,還應(yīng)錯落有致。,3.2 順序結(jié)構(gòu),在順序結(jié)構(gòu)中,程序按照由上往下的順序逐個執(zhí)行各語句。,#include void
6、 main() int a=3,b=4; int temp; temp=a; a=b; b=temp; printf(a=%d,b=%dn,a,b); ,3.3 選擇結(jié)構(gòu),本節(jié)內(nèi)容,3.3.2 多分支語句,3.3.1 條件語句,3.3.1 條件語句,條件語句總的來說是判斷條件,根據(jù)條件滿足情況,確定執(zhí)行哪些程序語句。 在條件語句中,要給出測試的條件,它可是任何常量、變量或表達(dá)式。大多數(shù)情況下,條件語句中被測試的條件為關(guān)系表達(dá)式或邏輯表達(dá)式。在條件語句中,條件的計算結(jié)果為非0時滿足條件,否則不滿足條件。 if(x5) if(a 2功能 若E為非0,即為真值時,執(zhí)行if語句中的語句組,否則執(zhí)行后面
7、的語句。,3.3.1 條件語句,表達(dá)式,3.3.1 條件語句,#include void main() int x; printf(please input x:n); scanf(%d, ,3.3.1 條件語句,#include void main() float a,b,s; scanf(%f,%f, ,3.3.1 條件語句,#include void main() float a,b,s; float t; scanf(%f,%f, ,3.3.1 條件語句,3.3.1.2 雙分支選擇結(jié)構(gòu) 1格式 if(E) 語句組1; else 語句組2; 2功能 如果E為非0,則執(zhí)行語句組1的語句;否
8、則執(zhí)行語句組2。,3.3.1 條件語句,3.3.1 條件語句,#include void main() int x,y; scanf(%d, ,3.3.1 條件語句,3.3.1.3 用if-else實現(xiàn)多分支選擇結(jié)構(gòu) 實現(xiàn)多分支選擇結(jié)構(gòu)的if語句結(jié)構(gòu)如下: if(E1) 語句組1; else if(E2) 語句組2; else if(E3) 語句組3; else if(En) 語句組n; else 語句組n+1;,3.3.1 條件語句,#include void main() float x,y; scanf(%f, ,3.3.1 條件語句,3.3.1.4 if語句的嵌套 if語句是可以嵌套的
9、,即if語句內(nèi)部還可以包含if語句。 if(E1) if(E2) 語句組1; else 語句組2; else if(E3) 語句組3; else 語句組4;,3.3.1 條件語句,#include void main() int a,b,c; int small; scanf(%d,%d,%d, ,else if(b=c) small=b; else small=c; printf(smallest=%dn,small); ,3.3.1 條件語句,關(guān)于選擇結(jié)構(gòu)要注意的問題: (1)if語句中的判斷條件不一定必須是關(guān)系表達(dá)式、邏輯表達(dá)式或結(jié)果為整數(shù)值的表達(dá)式。 (2)當(dāng)if語句中的判斷條件為相等
10、關(guān)系式時,要注意用“=”運(yùn)算符,而不要用賦值運(yùn)算符“=”。 (3)在if語句的嵌套使用中,注意else與if的配對問題。 C語言規(guī)定else與其上面最靠近它的還未配對的if相配對。,3.3.2 多分支語句,多分支語句也叫開關(guān)語句,是多分支選擇結(jié)構(gòu),它是根據(jù)多個條件進(jìn)行多條運(yùn)行線路的選擇。 1格式 switch(E) case c_E1:語句組1; break; case c_E2:語句組2; break; case c_En;語句組n; break; default: 語句組n+1; break; ,3.3.2 多分支語句,2說明 (1)switch語句的作用是建立多路分支程序結(jié)構(gòu)。 (2)s
11、witch后面括號中的E的值通常為整型或字符型。 (3)其中,c_E1 c_En稱為情況常量,通常為整型或字符型常量。 (4)關(guān)鍵字case和后面的情況常量之間至少要用一個空格隔開。 (5)E的值的類型要與情況常量的值類型相同。 (6)每個情況常量的值必須互不相同。,3.3.2 多分支語句,(7)各個case和default出現(xiàn)的次序不影響執(zhí)行結(jié)果。 (8)每個情況常量后都跟一個語句組,也就是符合該情況時,要執(zhí)行的若干語句。 (9)格式用中括號“”和“”括起來的break;為任選項,根據(jù)程序需要。 (10)執(zhí)行完case后面的語句組后,如果沒有遇到break語句,接著執(zhí)行下面case后的語句,
12、直到switch語句結(jié)束。 (11)正確使用break語句可以控制switch語句的流程。,3.3.2 多分支語句,3執(zhí)行過程 switch語句先計算表達(dá)式E的值,然后E依次與c_E1 到c_En進(jìn)行比較。若E的值與某個情況常量c_Ei相等,則轉(zhuǎn)到c_Ei:后面的“語句組i”去執(zhí)行,執(zhí)行完后再由break語句跳出switch語句,繼續(xù)執(zhí)行后面語句。當(dāng)所有情況都不滿足(E的值與所有情況常量的值都不相等)時,執(zhí)行default:后面的語句組。 注意1:如果case后面的語句組不跟隨break語句,則在執(zhí)行第一個符合條件的語句組后將不判斷后面的條件,將直接依次執(zhí)行其它情況常量后面的語句組。 注意2:
13、switch語句中可以省略defatult子句。在這中情況下,當(dāng)所有情況都不滿足時,將不執(zhí)行任何語句組,直接跳出switch語句。,3.3.2 多分支語句,#include void main() int score; int k; scanf(%d, ,3.3.2 多分支語句, int score; int k; scanf(%d, ,3.4 循環(huán)結(jié)構(gòu),本節(jié)內(nèi)容,3.4.2 while循環(huán)語句,3.4.3 do-while循環(huán)語句,3.4.4 循環(huán)嵌套,3.4.1 for循環(huán)語句,3.4.5 三種基本結(jié)構(gòu)的綜合應(yīng)用,3.4 循環(huán)結(jié)構(gòu),到目前為止,我們討論的程序無論是簡單語句還是條件語句都是按
14、從上向下的順序執(zhí)行的。在解決實際問題中,有許多情況是要重復(fù)做某件事情,如果僅用前面介紹的方法編程,那是十分麻煩的,有時是不可能的。這類問題的解決需要用程序設(shè)計中的循環(huán)結(jié)構(gòu)。在C語言中,循環(huán)結(jié)構(gòu)可以用for、while、do-while三種循環(huán)語句來完成。,3.4.1 for循環(huán)語句,for語句的特點(diǎn)是結(jié)構(gòu)清晰,簡潔有效。 1格式 for(表達(dá)式1;表達(dá)式2;表達(dá)式3;) 語句組; 2功能 for循環(huán)語句用于構(gòu)成程序的循環(huán)結(jié)構(gòu)。,3.4.1 for循環(huán)語句,3組成 for:為語句關(guān)鍵字; 表達(dá)式1:為表達(dá)式語句,通常為賦值語句,用于為循環(huán)控制變量賦初值。循環(huán)變量是控制循環(huán)次數(shù)的變量。 表達(dá)式2:
15、為表達(dá)式語句,通常為關(guān)系表達(dá)式或邏輯表達(dá)式語句,用于對循環(huán)條件進(jìn)行判斷;滿足條件則繼續(xù)循環(huán),不滿足條件則終止循環(huán)。所謂滿足條件就是表達(dá)式2的值為非0,否則就是不滿足條件。,3.4.1 for循環(huán)語句,表達(dá)式3:為表達(dá)式語句,通常為自增或自減表達(dá)式語句,有時為賦值語句,用于改變循環(huán)控制變量的值。 語句組:語句組為循環(huán)體,是被循環(huán)的對象,它可以是單個語句或多個語句,甚至是另一個循環(huán)語句,也就是循環(huán)的嵌套。當(dāng)為復(fù)合語句時,必須用花括號“”和“”引起來。當(dāng)語句組只有一句時,可省略花括號(或者說,如果不加大括號,則循環(huán)體的范圍只到while后面第一個分號處)。,3.4.1 for循環(huán)語句,4執(zhí)行過程 (
16、1)首先,計算“表達(dá)式1”,為循環(huán)變量賦初值?!氨磉_(dá)式1”只是在剛進(jìn)入循環(huán)語句時計算1次。 (2)計算“表達(dá)式2”,判斷循環(huán)條件是否滿足。若“表達(dá)式2”的值為真(非0),則順序執(zhí)行循環(huán)體中的語句,否則,for循環(huán)結(jié)束。如果在for循環(huán)語句中缺少“表達(dá)式2”,則默認(rèn)循環(huán)條件為真,這時構(gòu)成了無限循環(huán)。例如for(i=1;i+) (3)順序執(zhí)行循環(huán)體中的各語句,后進(jìn)行下一步。 (4)計算“表達(dá)式3”,修改循環(huán)控制變量,然后轉(zhuǎn)到(2)。,3.4.1 for循環(huán)語句,N,Y,3.4.1 for循環(huán)語句,#include void main() int i,s=0; for(i=1;i=10;i+) s=
17、s+i; printf(s=%dn,s); ,3.4.1 for循環(huán)語句,#include void main() int i,n,s=1; printf(please input n:n); scanf(%d, ,3.4.1 for循環(huán)語句,#include void main() int i; int n; float s=1,p=0; printf(please input n:n); scanf(%d, ,3.4.2 while循環(huán)語句,while循環(huán)語句 while循環(huán)語句可以用來實現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。 1格式 while(表達(dá)式) 語句組; 2功能: 構(gòu)成首先判斷循環(huán)條件的程序結(jié)構(gòu)
18、,其特點(diǎn)是先判斷表達(dá)式的值,而后執(zhí)行語句。,3.4.2 while循環(huán)語句,3組成 while:為語句關(guān)鍵字。 表達(dá)式:表達(dá)式為決定是否繼續(xù)進(jìn)行循環(huán)的判斷條件。通常為關(guān)系表達(dá)式或邏輯表達(dá)式。當(dāng)表達(dá)式的值為非0時,即滿足循環(huán)條件;否則不滿足。 語句組:語句組為循環(huán)體,可以是單一語句,也可是是復(fù)合語句,或內(nèi)嵌其他結(jié)構(gòu)。 4執(zhí)行過程: while循環(huán)語句的執(zhí)行是:先計算表達(dá)式的值,然后根據(jù)這個值來決定是否執(zhí)行循環(huán)體;否則,循環(huán)結(jié)束,程序?qū)㈨樞驁?zhí)行while循環(huán)后面的語句。,3.4.2 while循環(huán)語句,3.4.2 while循環(huán)語句,#include void main() int i=1,s=0
19、; while(i=10) s+=i+; printf(s=%dn,s); ,3.4.2 while循環(huán)語句,#include void main() int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; ,3.4.3 do-while循環(huán)語句,do-while循環(huán)語句 這種循環(huán)結(jié)構(gòu)與while循環(huán)語句的區(qū)別是do-while是先執(zhí)行后判斷,while是先判斷后執(zhí)行。 1格式 do 語句組; while(表達(dá)式); 2用途 構(gòu)成后判斷循環(huán)條件的程序結(jié)構(gòu),即循環(huán)體至少執(zhí)行一次。,3.4.3 do-while循環(huán)語句,3組成 do和while:為循
20、環(huán)語句的關(guān)鍵字。 表達(dá)式:為決定是否繼續(xù)進(jìn)行循環(huán)的條件,與while的同理。 語句組:語句組為循環(huán)體。 注意,此結(jié)構(gòu)中,最后要以分號結(jié)束(while(表達(dá)式);) 4執(zhí)行過程 該循環(huán)的執(zhí)行是,先執(zhí)行循環(huán)體,然后計算判斷表達(dá)式的值,根據(jù)這個值來決定是否繼續(xù)執(zhí)行循環(huán)體。如果表達(dá)式的值為非0,則轉(zhuǎn)去執(zhí)行循環(huán)體;否則,循環(huán)結(jié)束。循環(huán)體中的語句至少執(zhí)行一次。,3.4.3 do-while循環(huán)語句,3.4.3 do-while循環(huán)語句,#include void main() int i=1,s=0; do s+=i+; while(i=10); printf(s=%dn,s); ,3.4.4 循環(huán)嵌套,
21、一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu),就稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套循環(huán),這就是多層循環(huán)嵌套。三種循環(huán)可以互相嵌套,嵌套的層數(shù)不限。 循環(huán)嵌套的執(zhí)行流程是從外層循環(huán)開始執(zhí)行,再進(jìn)入內(nèi)層循環(huán)執(zhí)行,內(nèi)層循環(huán)執(zhí)行完畢后,退到外層循環(huán)繼續(xù)執(zhí)行。,3.4.4 循環(huán)嵌套,#include void main() int i=1,j=1; for(i=1;i=5;i+) for(j=1;j=i;j+) putchar(*); putchar(n); ,* * * * *,3.4.4 循環(huán)嵌套,#include void main() int i,j; for(i=1;i10;i+) for(j=
22、1;j=i;j+) printf(%d*%d=%dt,j,i,i*j); printf(n); ,3.4.5 三種基本結(jié)構(gòu)的綜合應(yīng)用,#define PI 3.14159 #include void main() int r=1; float area; for(r=1;r=10;r+) area=PI*r*r; if(area100) printf(%fn,area); ,3.4.5 三種基本結(jié)構(gòu)的綜合應(yīng)用,#include #include void main() int x,i; int flag=1; printf(input x:n); scanf(%d,if(x=2) flag=0; for(i=2;i=sqrt(x);i+) if(x%i=0) flag=0; if(flag=1) 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 調(diào)酒沙龍活動方案策劃(3篇)
- 水下拆除施工方案(3篇)
- 手繪驚喜活動策劃方案(3篇)
- 保暖大棚施工方案(3篇)
- 浴室擴(kuò)建施工方案(3篇)
- 化工車間培訓(xùn)資料
- 城市酒店員工培訓(xùn)
- 2025年大學(xué)舞蹈(舞蹈心理學(xué))試題及答案
- 2025年大學(xué)會計學(xué)(財務(wù)會計基礎(chǔ))試題及答案
- 2025年高職作物生產(chǎn)與經(jīng)營管理(農(nóng)業(yè)項目管理)試題及答案
- (2025年)昆山杜克大學(xué)ai面試真題附答案
- 智慧醫(yī)療智能病房管理系統(tǒng)操作手冊
- 高級衛(wèi)生專業(yè)技術(shù)資格考試臨床醫(yī)學(xué)檢驗臨床微生物(042)(副高級)試題及解答參考(2025年)
- 四川省南充市2024-2025學(xué)年高一數(shù)學(xué)上學(xué)期期末考試試題含解析
- JGJ100-2015車庫建筑設(shè)計規(guī)范
- 2024屆高考語文復(fù)習(xí):二元思辨類作文
- DB11T 696-2023 預(yù)拌砂漿應(yīng)用技術(shù)規(guī)程
- (完整word版)英語四級單詞大全
- 井下作業(yè)技術(shù)油水井措施酸化課件解析
- 旅游接待業(yè) 習(xí)題及答案匯總 重大 第1-10章 題庫
- 智慧金庫項目需求書
評論
0/150
提交評論