程序的三種基本結(jié)構(gòu)_第1頁(yè)
程序的三種基本結(jié)構(gòu)_第2頁(yè)
程序的三種基本結(jié)構(gòu)_第3頁(yè)
程序的三種基本結(jié)構(gòu)_第4頁(yè)
程序的三種基本結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

結(jié)構(gòu)化程序設(shè)計(jì)基本思想:任何程序都可以用三種基本結(jié)構(gòu)表示,限制使用無(wú)條件轉(zhuǎn)移語(yǔ)句(goto)結(jié)構(gòu)化程序:由三種基本結(jié)構(gòu)反復(fù)嵌套構(gòu)成的程序叫~優(yōu)點(diǎn):結(jié)構(gòu)清晰,易讀,提高程序設(shè)計(jì)質(zhì)量和效率三種基本結(jié)構(gòu)順序結(jié)構(gòu)ABAB流程圖N-S圖程序的三種基本結(jié)構(gòu)

PAB真假PBA真假kA1A2AiAnk=k2k=k1k=knk=ki......二分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)選擇結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)PA假真當(dāng)P為真AAP真假A直到P為真注:A,B,A1….An可以是一個(gè)簡(jiǎn)單語(yǔ)句,也可以是一個(gè)基本結(jié)構(gòu)循環(huán)結(jié)構(gòu)

返回第5章選擇語(yǔ)句5.1if條件語(yǔ)句5.2switch多分支選擇語(yǔ)句5.3程序舉例5.1if條件語(yǔ)句if語(yǔ)句是用來(lái)判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。5.1.1if語(yǔ)句的三種形式1.單分支選擇語(yǔ)句的形式:if(表達(dá)式)語(yǔ)句

這種if語(yǔ)句的執(zhí)行過(guò)程見圖:0(N)表達(dá)式語(yǔ)句1(Y)main(){floatx,y;scanf(“%f”,&x);if(x>=0)y=2*x;if(x<0)y=3-x;printf(“y=%6.2f”,y);}任給a,b,c三個(gè)數(shù),按從小到大的順序輸出。分析:(1)對(duì)于a,b任意兩個(gè)數(shù):若a<b,則輸出a,b;否則輸出b,a;

(2)對(duì)于三個(gè)數(shù),有6種可能:

a<b<ca<c<bb<a<cb<c<ac<a<bc<b<a

(3)使用判斷——交換法:

1.若a>b,則交換a和b,交換后a<b2.若a>c,則交換a和c,交換后a<c3.若b>c,則交換b和c,交換后b<c[例5.2」輸入三個(gè)數(shù),按由小到大順序輸出。main(){inta,b,c,temp;printf("Inputa,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);if(a>b){temp=a;a=b;b=temp;}if(a>c){temp=a;a=c;c=temp;}if(b>c){temp=b;b=c;c=temp;}printf("%d,%d,%d",a,b,c);}

運(yùn)行情況如下:3,7,11,3,72.雙分支選擇語(yǔ)句的形式:

if(表達(dá)式)語(yǔ)句1else語(yǔ)句2

見圖:表達(dá)式語(yǔ)句1語(yǔ)句2真假main(){floatx,y;scanf(“%f”,&x);if(x<0)y=3-x;elsey=2*x;printf(“y=%6.2f”,y);}輸入兩個(gè)數(shù),比較其大小,將較大的數(shù)輸出。流程分析:(1)輸入兩個(gè)數(shù)據(jù)a,b;

(2)如果a>b則輸出a;否則,輸出b。#include<stdio.h>main(){floata,b;scanf(“%f,%f”,&a,&b);if(a>b)printf(“%f”,a);elseprintf(“%f”,b);}3.多分支選擇語(yǔ)句的形式:if(表達(dá)式1)語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2elseif(表達(dá)式3)語(yǔ)句3elseif(表達(dá)式m)語(yǔ)句melse語(yǔ)句n

流程圖表達(dá)式1FT表達(dá)式3FT表達(dá)式2FT表達(dá)式4FT語(yǔ)句4語(yǔ)句5語(yǔ)句3語(yǔ)句2語(yǔ)句1

寫一個(gè)程序完成下列功能:

1.輸入一個(gè)分?jǐn)?shù)score2.score<60輸出E3.60<=score<70輸出D4.70<=score<80輸出C5.80<=score<90輸出B6.90<=score輸出A多分支問(wèn)題#include<stdio.h>main(){intscore;scanf(“%d”,&score);if(score<60)printf(“E”);elseif(score<70)printf(“D”);elseif(score<80)printf(“C”);elseif(score<90)printf(“B”);elseprintf(“A”);}程序如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a(chǎn)’)printf(“%d”,’a’);if后面的表達(dá)式類型任意語(yǔ)句可以是復(fù)合語(yǔ)句

if(x)

if(x!=0)if(!x)

if(x==0)例考慮下面程序的輸出結(jié)果:#include<stdio.h>main(){intx,y;scanf(“%d,%d”,&x,&y);if(x>y)x=y;y=x;elsex++;y++;printf(“%d,%d\n”,x,y);}CompileError!說(shuō)明:5.1.2一般形式:if(expr1)if(expr2)statement1elsestatement2elseif(expr3)statement3elsestatement4內(nèi)嵌if內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement2內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement3

內(nèi)嵌ifif(expr1)statement1elseif(expr3)statement3elsestatement4內(nèi)嵌ifif語(yǔ)句嵌套/*ch4_4.c*/#include<stdio.h>main(){intx,y;printf("Enterintegerx,y:");scanf("%d,%d",&x,&y);if(x!=y)if(x>y)printf("X>Y\n");elseprintf("X<Y\n");elseprintf("X==Y\n");}運(yùn)行:Enterintegerx,y:12,23

X<YEnterintegerx,y:12,6

X>YEnterintegerx,y:12,12

X==Y例輸入兩數(shù)并判斷其大小關(guān)系缺省{}時(shí),else總是和它上面離它最近的未配對(duì)的if配對(duì)if(……)if(……)if(……)else…...else…...else…...if~else配對(duì)原則:例:if(a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修改:if(a==b){if(b==c)printf(“a==b==c”);}elseprintf(“a!=b”);實(shí)現(xiàn)if~else正確配對(duì)方法:加{}實(shí)現(xiàn)if~else正確配對(duì)方法5.2switch語(yǔ)句

switch語(yǔ)句是多分支選擇語(yǔ)句。if語(yǔ)句只有兩個(gè)分支可供選擇,而實(shí)際問(wèn)題中常常需要用到多分支的選擇。例如,學(xué)生成績(jī)分類(90分以為‘A’等,80~89分為‘B’等,70~79分為‘c’

等,……);人口統(tǒng)計(jì)分類(按年齡分為老、中、青、少、兒童);工資統(tǒng)計(jì)分類;銀行存款分類;……等。當(dāng)然這些都可以用嵌套的if語(yǔ)句或多分支來(lái)處理,但如果分支較多,則嵌套的if語(yǔ)句層數(shù)多,程序冗長(zhǎng)而且可讀性降低。C語(yǔ)言提供switch語(yǔ)句直接處理多分支選擇,它的一般形式如下:

switch(表達(dá)式)

{case常量表達(dá)式1:語(yǔ)句1case常量表達(dá)式2:語(yǔ)句2case常量表達(dá)式i:語(yǔ)句ndefault:語(yǔ)句n+1}

首先計(jì)算表達(dá)式的值,然后依次與常量表達(dá)式

i(i=1,2,……,n)比較。若表達(dá)式的值與某一個(gè)常量表達(dá)式,如j(1≤j≤n)相等,則執(zhí)行語(yǔ)句j。

②若表達(dá)式的值與所有的常量表達(dá)式i(i=1,2,……,n)均不相等,則執(zhí)行defau1t后面的語(yǔ)句n+1。功能語(yǔ)句中的表達(dá)式可以是整型或字符型、枚舉型。常量表達(dá)式i必須與表達(dá)式類型一致(整型與字符型通用)。i僅起語(yǔ)句標(biāo)號(hào)作用,不做求值判斷。語(yǔ)句結(jié)構(gòu)中各個(gè)case后常量表達(dá)式的值必須互不相同;否則執(zhí)行時(shí)將出現(xiàn)矛盾。各個(gè)case的出現(xiàn)次序不影響執(zhí)行結(jié)果。例如,可以先出現(xiàn)case‘D’:…,然后是case‘A’:……default一般出現(xiàn)在所有case之后,也可以出現(xiàn)在case之前或兩個(gè)case之間,default也可以缺省。為了在執(zhí)行完一個(gè)case分支后能跳出switch多分支選擇語(yǔ)句,可在case分支結(jié)束后,插入一個(gè)break語(yǔ)句。若有break語(yǔ)句,就從此break語(yǔ)句跳出break所在的當(dāng)前結(jié)構(gòu);若無(wú)break語(yǔ)句,執(zhí)行該語(yǔ)句后,流程控制轉(zhuǎn)移到下一個(gè)分支:繼續(xù)執(zhí)行這一個(gè)分支的語(yǔ)句,一直到最后一個(gè)語(yǔ)句執(zhí)行完。下一頁(yè)注意switch(i){case1:printf(″A\n″);

case3:printf(″C\n″);case4:printf(″D\n″);default:printf(″E\n″);}

假設(shè)i=3時(shí),則會(huì)從i=3時(shí)做起始語(yǔ)句。運(yùn)行結(jié)果見右圖。如果給每條語(yǔ)句加上break這樣就只執(zhí)行一條語(yǔ)句。C

D

E下一頁(yè)看下面的例子運(yùn)行結(jié)果case2:printf(″B\n″);如果多種情況需要共用一個(gè)執(zhí)行語(yǔ)句,可用case的常量表達(dá)式多種情況列出,最后一種情況后,才放執(zhí)行的語(yǔ)句。

case后面的語(yǔ)句可以是一條語(yǔ)句,也可以是復(fù)合語(yǔ)句,還可以是花括弧括起來(lái)的幾條語(yǔ)句,還可以是空語(yǔ)句。有多條語(yǔ)句時(shí)會(huì)順序執(zhí)行完所有語(yǔ)句。下一頁(yè)說(shuō)明編程:根據(jù)輸入的學(xué)生的成績(jī)判斷等級(jí)。當(dāng)成績(jī)score≥90時(shí)為A等;成績(jī)70≤score<90為B等;成績(jī)60≤score<70為C等;成

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論