C程序的流程設(shè)計_第1頁
C程序的流程設(shè)計_第2頁
C程序的流程設(shè)計_第3頁
C程序的流程設(shè)計_第4頁
C程序的流程設(shè)計_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 C語言程序設(shè)計電子教案 PAGE 26第三章 C程序的流程設(shè)計一、教學(xué)的目的與要求掌握順序、選擇、循環(huán)三類程序流程控制語句,以及轉(zhuǎn)移語句,能夠正確使用它們編程。二、重點與與難點:if語句中中的條件件表達(dá)式式,iff語句中中if-elsse的匹匹配關(guān)系系,iff語句的的嵌套;swiitchh語句的的控制流流程,sswittch語語句的嵌嵌套;三三種循環(huán)環(huán)語句的的格式和和功能,循循環(huán)嵌套套的使用用;轉(zhuǎn)移移語句的的使用。三、教學(xué)內(nèi)內(nèi)容第一節(jié) 算法1、算法的的概念為解決某一一個問題題而采取取的方法法和步驟驟,就稱稱為算法法。2、算法的的性質(zhì) = 1 * GB3 有窮性:一個算算法應(yīng)包包含有限限的操作

2、作步驟 = 2 * GB3 一個初始始:此動動作序列列只有一一個初始始動作 = 3 * GB3 確定性:算法中中的每一一個步驟驟都應(yīng)當(dāng)當(dāng)是確定定性的,僅僅有一個個后繼動動作。 = 4 * GB3 有一個或或多個輸輸出:序序列終止止表示問問題得到到解答或或問題沒沒有解答答,沒有有輸出的的算法是是沒有意意義的。第二節(jié) 選擇型型程序設(shè)設(shè)計1、if 語句的的形式 = 1 * GB3 iff(條件件表達(dá)式式) 語句句 = 2 * GB3 iff(條件件表達(dá)式式) 語句句1 eelsee 語語句 2 注意意: = 1 * GB3 if語句句中的條條件表達(dá)達(dá)式一般般為邏輯輯表達(dá)式式或關(guān)系系表達(dá)式式,但也也可

3、以是是任意的的數(shù)值類類型(包包括整型型、實型型、字符符型、指指針類型型),例例如下列列語句也也是合法法的。 if(aa) pprinntf(“%dd” ,a); = 2 * GB3 在if語語句中,分分號是語語句的結(jié)結(jié)束標(biāo)志志。 = 3 * GB3 在if和和elsse后面面可以只只含一個個內(nèi)嵌的的操作語語句,也也可以有有多個操操作語句句,此時時用花括括號將幾幾個語句句括起來來成為一一個復(fù)合合語句。例1:以下下不正確確的iff語句形形式是( )。A)if(xyy&xx!=yy);B)if(x=y) x+=y;C)if(x!=y) sccanff(“%d”,&x) ellse sscannf(“

4、%d”,&y);D)if(xy)z=x;xx=y;y=zz; 答案案:x,y,zz的值分分別是:20 300 330 詳解解:在此此語句中中,條件件xyy為假,所所以只執(zhí)執(zhí)行x=y;yy=z;兩條語語句。例3、以下下不正確確的語句句是( )A)if(xyy);B)if(x=yy)&(x!=0) xx+=yy;C)if(x!=y) scaanf(“%dd”,&x);D)if(xyy)xx+;y+;答案:D詳解:分號號是語句句結(jié)束的的標(biāo)志,y+的末尾無分號,所以y+不是合法的語句。2、if 的嵌套套 iif(條條件1) iif(條條件2) 語句11 eelsee 語句22 eelsee if(條條

5、件3) 語句33 eelsee 語句44例4:以下下程序的的輸出結(jié)結(jié)果是( )main( )int aa=1000,xx=100,y=20,ok11=5,ok22=0;if(xy)if(y!=100)if (!okk1)a=1;else if(ok22) a=110; priintff(“%dnn”,aa); 答案:1000詳解:把110、20、5、0分別給給變量xx、y、ook1、ook2賦賦值,執(zhí)執(zhí)行條件件語句后后a值沒沒有改變變,所以以a值仍仍是原值值1000。3、swiitchh結(jié)構(gòu)switcch語句句是多分分支選擇擇語句,其其形式如如下:switcch(表表達(dá)式)case 常量表表達(dá)

6、式11:語句句1case 常量表表達(dá)式22:語句句2defauult:語句n+1注意:1、swiitchh后面括括弧內(nèi)的的“表達(dá)式式”,可以以是整型型表達(dá)式式或字符符型表達(dá)達(dá)式,也也可以枚枚舉型數(shù)數(shù)據(jù)。2、當(dāng)表達(dá)達(dá)式的值值與某一一個caase后后面的常常量表達(dá)達(dá)式的值值相等時時,就執(zhí)執(zhí)行此ccasee后面的的語句,若若所有的的casse中的的常量表表達(dá)式的的值都沒沒有與表表達(dá)式的的值匹配配的,就就執(zhí)行ddefaaultt后面的的語句。3、每一個個casse的常常量表達(dá)達(dá)式的值值必須互互不相同同,否則則就會出出現(xiàn)互相相矛盾的的現(xiàn)象。4、執(zhí)行完完一個ccasee后面的的語句后后,流程程控制轉(zhuǎn)轉(zhuǎn)移到

7、下下一個ccasee繼續(xù)執(zhí)執(zhí)行,直直到遇到到breeak語語句或執(zhí)執(zhí)行完為為止。5、deffaullt可以以放在ccasee語句的的后面,也也可以放放在caase語語句的前前面。例5:運輸輸公司對對用戶計計算運費費,距離離越遠(yuǎn),每每公里運運費越低低。設(shè)每每公里每每噸貨物物的基本本運費為為p,貨物物重為ww,距離離為s,折扣為為d,則總總運費ff計算公公式為ff=p*w*ss(1-d),編編寫程序序。公里里數(shù)s與與折扣率率d的標(biāo)標(biāo)準(zhǔn)如下下:(此此程序可可用iffeelsee來完成成,也可可以用sswittch來來完成)。s2500km d=0250ss5000 dd=0.05500ss10000

8、 dd=0.07551000s220000 dd=0.12000s330000 dd=0.153000s d=0.22 mainn()int ss;floatt p,w,dd,f;printtf(“請輸入入每公里里每噸貨貨物的基基本運費費”);scanff(“%f”,&p);printtf(“請輸入入貨物重重”);scanff(“%f”,&w);printtf(“請輸入入公里數(shù)數(shù)”);scanff(“%f”,&s);switcch(intt)(ss/2550) case 0: d=00; brreakk; casse 11: d=00.055; bbreaak; casee 2: casse

9、33: d=0.0075; breeak; casse 44: casse 55:case 6: casse 77: d=00.1; bbreaak; casse 88: casse 99:case 10: casse 111: d=0.115; breeak; deffaullt: d=0.22; f=pp*w*s(11-d); priintff(“基本運運費是:%f”,f);詳解:1、多個ccasee可共用用一組執(zhí)執(zhí)行語句句,必須須寫成如如下的形形式:case 4: casse 55:case 6: casse 77: d=00.1; bbreaak;case后后面只能能有一個個常量,把把

10、上式改改寫成ccasee 4,5,66,7: dd=0.1; bbreaak;的的形式是是錯誤的的。2、swiitchh后面括括弧內(nèi)的的“表達(dá)式式”必須是是整型表表達(dá)式或或字符型型表達(dá)式式,也可可以是枚枚舉型數(shù)數(shù)據(jù),對對于swwithh來說,關(guān)關(guān)鍵是把把原始數(shù)數(shù)據(jù)轉(zhuǎn)換換為易表表達(dá)的形形式。例6:請讀讀以程序序?qū)懗龀坛绦虻妮斴敵鼋Y(jié)果果。#inclludeemain( ) int xx=1,y=00,a=0,bb=0; swwitcch(xx) casse 11: sswittch(y) case 0: aa+;breeak;case 1: bb+;breeak; casse 22: aa+;b+

11、;brreakk; prrinttf(“aa=%dd,b=%d”,a,bb);答案:a=2,bb=1詳解:此程程序是sswittch的的嵌套結(jié)結(jié)構(gòu),在在此程序序中brreakk跳出內(nèi)內(nèi)層swwitcch結(jié)構(gòu)構(gòu),接著著執(zhí)行外外層swwitcch的casse 22后的語語句。例7:寫出出下面程程序的運運行結(jié)果果是( )main()int ii;for(ii=1;i=5;ii+) swiitchh(i%5) case 0: priintff(“*”); brreakk; caase 1: priintff(“#”); brreakk; deefauult: prrinttf(“n”); caase

12、2: priintff(“&”); 答案:#& & &*詳解:deefauult可可放在ccasee語句的的前面,也也可以放放在caase語語句的后后面,當(dāng)當(dāng)i%55不等于于0,11,2時時,將執(zhí)執(zhí)行deefauult后后的語句句priintff(“n”);執(zhí)執(zhí)行完成成后沒有有breeak,將將繼續(xù)執(zhí)執(zhí)行caase 2后的的語句pprinntf(“&”);第三節(jié) 循環(huán)型型程序設(shè)設(shè)計1、whiile語語句whilee語句用用來實現(xiàn)現(xiàn)”當(dāng)型”循環(huán)結(jié)結(jié)構(gòu),其其一般形形式如下下:whilee(條件件表達(dá)式式) 循循環(huán)體語語句例8:設(shè)有有程序段段: innt kk=100; whhilee(k=0) k

13、=k-11; 循循環(huán)體執(zhí)執(zhí)行( )次。 答案案:0答案解析:在此程程序的wwhille結(jié)構(gòu)構(gòu)中,條條件表達(dá)達(dá)式k=0的結(jié)結(jié)果永遠(yuǎn)遠(yuǎn)為0即即為假,所所以循環(huán)環(huán)執(zhí)行的的次數(shù)為為0。例9:下面面程序段段的運行行結(jié)果是是( )x=y=00; whhilee(x3) breeak; 循環(huán)執(zhí)執(zhí)行( )次次答案:4答案解析:whiile結(jié)結(jié)構(gòu)中的的條件表表達(dá)式pprinntf(“*”)的值為為輸出數(shù)數(shù)據(jù)的個個數(shù),在在此例中中,prrinttf(“*”)的的結(jié)果為為1,即為為真。2、do-whiile語語句do-whhilee語句的的特點是是先執(zhí)行行循環(huán)體體,然后后判斷循循環(huán)條件件是否成成立,其其一般形形式為

14、:do循環(huán)體語句句whille(條條件表達(dá)達(dá)式); 例11、若若有如下下語句 innt xx=3; doo prrinttf(“%dnn”,xx-=22); whilee(x);則上面程序序段輸出出結(jié)果是是( )。答案:1 例12、以以下程序序段循環(huán)環(huán)執(zhí)行幾幾次。x=-1;do x=xx*x; whhilee(!xx);答案:1例13、下下面程序序的運行行結(jié)果是是( )main( )int yy=100;doy; wwhille(y);printtf(“%dnn”,yy-);答案:0 3、forr語句C語言中的的forr語句使使用最為為靈活,不不僅可以以用于循循環(huán)次數(shù)數(shù)已經(jīng)確確定的情情況,而而

15、且可以以用于循循環(huán)次數(shù)數(shù)不確定定而只給給出循環(huán)環(huán)結(jié)束條條件的情情況,它它完全可可以代替替whiile語語句,其其一般形形式為:for(表表達(dá)式11;表達(dá)達(dá)式2;表達(dá)式式2) 語句句說明: = 1 * GB3 for語語句一般般形式中中的“表達(dá)式式1”可以省省略,此此時應(yīng)ffor語語句之前前給循環(huán)環(huán)變量賦賦初值。注注意省略略表達(dá)式式1時,其其后的分分號不能能省略。 = 2 * GB3 如果表達(dá)達(dá)式2省省略,即即不判斷斷循環(huán)條條件,循循環(huán)無終終止地進(jìn)進(jìn)行下去去。 = 3 * GB3 表達(dá)式33也可以以省略,但但此時程程序設(shè)計計者應(yīng)另另外設(shè)法法保證循循環(huán)正常常結(jié)束。 = 4 * GB3 可以省略略表

16、達(dá)式式1和表表達(dá)式33,只有有表達(dá)式式2,即即只給循循環(huán)條件件,在這這種情況況下,完完全等同同于whhilee語句。 = 5 * GB3 3個表達(dá)達(dá)式都可可省略,如如:foor( ; ; ) 語句,相相當(dāng)于wwhille(11) 語語句,即即不設(shè)初初值,不不判斷條條件(認(rèn)認(rèn)為表達(dá)達(dá)式2為為真值),循循環(huán)變量量不增值值。無終終止地執(zhí)執(zhí)行循環(huán)環(huán)體。 = 6 * GB3 表達(dá)式11可以是是設(shè)置循循環(huán)變量量初值的的賦值表表達(dá)式,也也可以是是與循環(huán)環(huán)變量無無關(guān)的其其他表達(dá)達(dá)式。ffor(summ=0;i=1000;i+) ssum=summ+i; = 7 * GB3 表達(dá)式一一般是關(guān)關(guān)系表達(dá)達(dá)式(如如i

17、=1100)或或邏輯表表達(dá)式(如如abb & x+y;x=ii+) i=x;B)forr(;x+=i)C)whiile(1)x+;D)forr(i=10;i) summ+=ii;答案:A例16、執(zhí)執(zhí)行語句句forr( i=11 ; i+4 ; ); 后變變量i的的值是( )答案:4例17、下下面程序序段的功功能是計計算10000!的末尾尾含有多多少個零零。請?zhí)钐羁?。for(kk=0,i=55;i=10000;i+=5)m=i;whilee( )k+;m=mm/5;答案:m%5!=04、breeak與與conntinnue在breaak語句句可以使使流程跳跳出swwitcch結(jié)構(gòu)構(gòu),繼續(xù)續(xù)執(zhí)行s

18、swittch語語句下面面的一個個語句。實實際上,bbreaak語句句還可以以用來從從循環(huán)體體內(nèi)跳出出循環(huán)體體,即提提高結(jié)束束循環(huán),接接著執(zhí)行行循環(huán)下下面的語語句。bbreaak語句句的一般般形式為為:brreakk;contiinuee語句只只結(jié)束本本次循環(huán)環(huán),而不不是終止止整個循循環(huán)的執(zhí)執(zhí)行。cconttinuue語句句的一般般形式為為:coontiinuee;例18、下下列程序序的運行行結(jié)果是是( )。 maiin( ) iint i,jj,x=0; foor(ii=0;i22;i+) x+; forr(j=0;jj=33;j+) iif(jj%2) coontiinuee; xx+;

19、x+; prinntf(“x=%dn”,x);答案:例19、下下面程序序的運行行結(jié)果是是( )main( ) intt k=0;ccharr c=A; do swiitchh(c+) caase A:k+;bbreaak; caase B:k; caase C:k+=2;breeak; caase D:kk=k%2;cconttinuue; caase E:k=k*110;bbreaak; deefauult:k=kk/3; k+;whille(cc=11e-66;i+) t=(-1)*t*ii; ss=s+1/tt;printtf(“%lf”,s);例24、有有一分?jǐn)?shù)數(shù)序列:2/11,3/2

20、,55/3,88/5,113/66,211/133,.求出這個數(shù)數(shù)列的前前20項項之和main() intt s=0, f1=1,ff2=22; forr(I=1;II=220;II+) s=s+ff2/ff1; f22=f11+f22; f11=f22-f11; priintff(“%d”,s);例25、打打印九九九表main( )int i,jj; for(ii=1;i=9;ii+) for(jj=1;j=9;jj+) priintff(“%2dd*%22d=%2d”,i,j,ii*j); prrinttf(“n”);例26、打打印出下下列圖形形 main( )int ii,j;for(i

21、i=1;i=5;ii+) for(jj=1;j=5+ffabss(i-3);j+) priintff(“ ”);for(jj=1;j=5-22*faabs(i-33);jj+) pprinntf(“”);printtf(“n”); 例27、打打印出下下列圖形形 例28、兔兔子繁殖殖問題main( ) int i,ff1,ff2,ff3; for(i=33;i=122;i+) f3=f11+f22;f1=f22;f2=f33;printtf(“%d”,f3);例29、求求最大公公約數(shù)、最最小公倍倍數(shù)。main( )int r,uu,v,m,nn;scanff(“%d,%d”,&m,&n);m=u

22、;nn=v;if(uv) r=u;uu=v;v=rr;whilee(u!=0)r=u%v;uu=v;v=rr;printtf(“最大公約數(shù)是:%d,最小公倍數(shù)是”,v,m*n/v);例30、ssn=a+aa+aaaa+aaaa,從從鍵盤輸輸入a及n后,求求sn方法一:main()int n,aa;long s;scnaff(“%d%dd”,&n,&a);for(ii=1;i=n;ii+) s=s*110+ii*a; priintff(“%ld”,s); 方法二:main()int n,aa;long s,tt=0;scnaff(“%d%dd”,&n,&a);for(ii=1;i=n;ii+)

23、t=t*110+aas=s+tt; priintff(“%ld”,s); 例31、給給出一個個不多于于5位的的正整數(shù)數(shù),要求求求出它它是幾位位數(shù)分別打打印出每每一位數(shù)數(shù)逆序打打印此數(shù)數(shù)據(jù)。main( )longg a; int i=00;s=0;printtf(“它的每一位數(shù):”);Whilee(a!=0) ii=i+1; x=a%10; a=a/10; s=s*10+x; prinntf(“%dd ”,x);printtf(“n”);printtf(“它是%d位數(shù)n”,i);printtf(“它的逆序是%dn”,s); 例32、輸輸出11000之間每每位數(shù)的的乘積大大于每位位數(shù)的和和的數(shù) m

24、aain() iint n,kk=1,s=00,m; foor(nn=1;ns) priintff(“%d”,n);例33、猴猴子吃桃桃問題,猴猴子第一一天摘下下若干桃桃子,當(dāng)當(dāng)即吃了了一半,還還不過癮癮又多吃吃了一個個,第二二天又將將剩下的的桃子吃吃掉一半半,又多多吃了一一個,以以后每天天都吃前前一天剩剩下的半半多一個個,到第第10天天,再吃吃桃時只只剩下一一個桃子子,求第第一天共共摘下多多少了桃桃。 maain() iint i,ss=1; ffor(i=99;i=1;i) s=2*ss+1;printtf(“第一天共摘下%d個桃子”,s);例34、準(zhǔn)準(zhǔn)備客票票:某鐵鐵路線上上共有110個

25、車車站,問問需要準(zhǔn)準(zhǔn)備幾種種車票。main()int i,jj,s=0; for(I=11;I=9;I+) forr(j=I+11;j=100;j+) ss=s+1; prinntf(“需要要準(zhǔn)備%d”,2*ss); 例例35、有10220個西西瓜,第第一天賣賣一半多多兩個,以以后每天天賣剩下下的一半半多兩個個,問幾幾天以后后能賣完完。 mmainn( ) innt dday=0,ss=10020; whiile(s=0) ss=s/2-22; dday+; priintff(“%d”,dayy);例36、從從三個紅紅球、五五個白球球、六個個黑球中中任意取取出八個個球,且且其中必必須有白白球,輸輸出所有有可能的的方案。main()int redd,whhitee,bllackk; for(whiite=1;wwhitte=5;wwhitte+) forr(reed=00;reed=3;rred+) ffor(blaack=0;bblacck=11e-66) x3=(x11+x22)/22; if(ff(x33)*ff(x22)00) x22=x33;else x11=x33;例38、牛牛

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論