C語(yǔ)言電子教案3_第1頁(yè)
C語(yǔ)言電子教案3_第2頁(yè)
C語(yǔ)言電子教案3_第3頁(yè)
C語(yǔ)言電子教案3_第4頁(yè)
C語(yǔ)言電子教案3_第5頁(yè)
已閱讀5頁(yè),還剩67頁(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)介

1、C,語(yǔ)言程序設(shè)計(jì),專業(yè)班級(jí),應(yīng)用物理,0601,班,主講,丁敬忠,湖南工程學(xué)院計(jì)算機(jī)系,2007.3,第,3,章,控制結(jié)構(gòu),3.1,程序結(jié)構(gòu)框圖,3.2,二分支結(jié)構(gòu),3.3,多分支結(jié)構(gòu),3.4,循環(huán)結(jié)構(gòu),3.5 break,與,continue,語(yǔ)句,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,算法的概念,計(jì)算機(jī)算法,數(shù)值運(yùn)算,求和,求方程的根,比大小,非數(shù)值運(yùn)算,排序,查找等,常用于事務(wù),管理等領(lǐng)域,算法,為解決一個(gè)問題而采取的方法和步驟,也可以說(shuō)算法是解題方法的精確描述,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,3.1,程序結(jié)構(gòu)框圖,簡(jiǎn)單算法舉例,例,3.1_1,

2、將,a,b,變量的值互換,A,B,C,簡(jiǎn)化,a=c,b=a,c=b,步驟,2,再將,b,的值放在,a,中,步驟,1,先將,a,的值放在,c,中,步驟,3,最后將,c,的值放在,b,中,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,c,稱為中間變量,例,3.1_2,求,1*2*3*4*5,的積,簡(jiǎn)化:設(shè),p,為,乘積,被乘數(shù),i,為乘數(shù),S1,1= p,S2,2=i,S3,p,i=p,S4,使,i,的值加,1,即,i+1=i,S5,如果,i,不大于,5,返回重新執(zhí)行步驟,S3,至,S5,否則,算法結(jié)束,步驟,1,先求,1*2,得到結(jié)果,2,步驟,2,將步驟,1,得到的乘積,2,再乘以,

3、3,得到結(jié)果,6,步驟,3,將,6,再乘以,4,得到,24,步驟,4,將,24,再乘以,5,得,120,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,上一步得到的乘積作為,下一步的被乘數(shù),分析:設(shè)變量,P,為被乘數(shù),i,為乘數(shù),將每一步的乘積放,在被乘數(shù),P,變量中,算法,s1: p=1,s2,i=3,s3: p*i=p,s4: i+2 =i,s5,當(dāng),i=11,返回,s2,否則結(jié)束,總結(jié):用,s3-s5,組成的循環(huán)實(shí)現(xiàn)乘法,通用、靈活,思考,s4,當(dāng),i11,返回,s3,有何結(jié)果,例,3.1_3,求,1*3*5*7*9*11,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,

4、算法的表示,自然語(yǔ)言,是人們?nèi)粘J褂玫恼Z(yǔ)言,可以是漢語(yǔ)或英語(yǔ)或其他語(yǔ)言,優(yōu)點(diǎn),通俗易懂,缺點(diǎn),1,比較繁瑣冗長(zhǎng),2,容易出現(xiàn)“歧義性,3,描述循環(huán),轉(zhuǎn)移時(shí),不直觀、不清晰,除簡(jiǎn)單的問題外,一般不用自然語(yǔ)言表示算法,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,偽代碼,pseudo code,一種介于自然語(yǔ)言和計(jì)算機(jī)語(yǔ),言之間的文字和符號(hào)來(lái)描述算法,求,1*3*5*7*9*11,用偽代碼描述其算法,let p=1,let i=1,while(i=11,begin,p=p,i,i=i+2,End,Output p,優(yōu)點(diǎn),寫法自由,沒有嚴(yán)格的規(guī)則,比較緊湊,易懂,易于轉(zhuǎn)換成程序,語(yǔ),言,程

5、,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,流程圖,用圖形來(lái)表示算法,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,傳統(tǒng)型(帶指向線流程圖,改進(jìn)型,N-S,流程圖,注釋框,連接點(diǎn),流程線(指向線,ANSI,標(biāo)準(zhǔn),處理框,輸入輸出框,起止框,判斷框,結(jié)構(gòu)化程序的三種基本結(jié)構(gòu),1,順序結(jié)構(gòu),A,B,b,a,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,P,為條件表達(dá)式,條件成,立值為真,不成立值為假,2.1,p,B,A,F,T,b,a,A,p,F,T,b,a,2.2,2,選擇結(jié)構(gòu),3,循環(huán)結(jié)構(gòu),3.1,當(dāng)型循環(huán),p,A,F,T,b,a,p,A,T,b,a,F,3.2,直到型循

6、環(huán),先判斷,后執(zhí)行,先執(zhí)行,后判斷,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,T,例,3.1_4,求十個(gè)數(shù)中的最大數(shù),開始,輸入一個(gè)數(shù),m,0=n,輸入一個(gè)數(shù),b,m=b,b,m,n+1=n,n9,打印,m,的值,結(jié)束,T,優(yōu)點(diǎn),直觀形象,易于理解,缺點(diǎn),占篇幅多,允許流程線,指向任何一個(gè)框,使用者可,以使流程隨意地轉(zhuǎn)來(lái)轉(zhuǎn)去,m,是最大值,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,F,F,分析:變量,m,存放最大數(shù),初值為輸入的第一個(gè)數(shù),變量,b,分別存放第二個(gè)數(shù),第十個(gè)數(shù),變量,n,作計(jì)數(shù)器,A,直到,P,成立,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),

7、C,N-S,流程圖,全部算法都寫在一個(gè)矩形框內(nèi),A,B,P,A B,T,F,當(dāng),P,成立,A,1,順序結(jié)構(gòu),2,選擇結(jié)構(gòu),3.1,當(dāng)型循環(huán),3.2,直到型循環(huán),三種基本結(jié)構(gòu)的特點(diǎn),1,只有一個(gè)入口,2,只有一個(gè)出口,3,結(jié)構(gòu)中的每一部分都有機(jī)會(huì)被執(zhí)行到,4,結(jié)構(gòu)內(nèi)沒有死循環(huán),由基本結(jié)構(gòu)所構(gòu)成的算法成為結(jié)構(gòu)化算法,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,輸入一個(gè)數(shù),b,例,用,N-S,流程圖描述“求十個(gè)數(shù)中的最大數(shù)”算法,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,輸入一個(gè)數(shù),m,0 =n,m=b,T,F,b,m,n+1=n,直到,n=9,思考,若,變量,n,的初值置

8、為,9,算法是否要作相應(yīng)的修,改?若需要,如何修改,特點(diǎn),1,直觀形象,易于理解,2,緊湊易畫,輸出,n,用計(jì)算機(jī)語(yǔ)言表示算法,必須嚴(yán)格遵循所用語(yǔ)言的語(yǔ)法規(guī)則,例,求十個(gè)數(shù)中的最大數(shù),main(,int m,b,n,scanf,d,n=0,while(n=9,scanf,d,if (mb) m=b,n=n+1,printf,the max %d,m,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,haha(,*only a joke,do nothing.*,main(,printf,請(qǐng)稍等,您將知道世界的未日,while(1,haha(,算法的特性,有窮性,一個(gè)算法必須總是在執(zhí)行有窮

9、步之后結(jié)束,且每,一步都在有窮時(shí)間內(nèi)完成,輸入,一個(gè)算法有零個(gè)或多個(gè)輸入,這些輸入取自于某個(gè),特定的對(duì)象集合,確定性,算法中每一條指令必須有確切的含義。不存在二,義性。且算法只有一個(gè)入口和一個(gè)出口,輸出,一個(gè)算法有一個(gè)或多個(gè)輸出,這些輸出是與輸入有,著某些特定關(guān)系的量,可行性,一個(gè)算法是可行的。即算法描述的操作都是可以,通過(guò)已經(jīng)實(shí)現(xiàn)的基本運(yùn)算執(zhí)行有限次來(lái)實(shí)現(xiàn)的,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,getsum(int num,int i,sum=0,for(i=1;i=num;i,sum+=i,無(wú)輸出的算法沒有任何意義,結(jié)構(gòu)化程序設(shè)計(jì)基本思想:任何程序都可以用三種,基本結(jié)構(gòu)

10、表示,結(jié)構(gòu)化程序:由三種基本結(jié)構(gòu)反復(fù)嵌套構(gòu)成的程序,叫,優(yōu)點(diǎn):結(jié)構(gòu)清晰,易讀,提高程序設(shè)計(jì)質(zhì)量和效率,實(shí)現(xiàn)方法:自頂向下,逐步細(xì)化,模塊化設(shè)計(jì),結(jié),構(gòu)化編碼,結(jié)構(gòu)化程序設(shè)計(jì)方法,模塊化:將一個(gè)大任務(wù)分成,若干個(gè)較小的部分,且具有一,定的功能,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,公交車管理系統(tǒng),登錄模塊,調(diào)整模塊,線路輸出模塊,站點(diǎn)調(diào)整,線路調(diào)整,增加,更名,刪除,增加,更名,刪除,if,語(yǔ)句,條件選擇語(yǔ)句,if,語(yǔ)句的三種形式,形式一,格式,if (expression,statement,執(zhí)行過(guò)程,條件,語(yǔ)句,T,F

11、,例,if (xy,printf(“%d”,x,條件,語(yǔ)句,1,語(yǔ)句,2,T,F,形式二,格式,if (expression,statement1,else,statement2,執(zhí)行過(guò)程,例,if (xy) max=x,else max=y,3.2,二分支結(jié)構(gòu),語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,形式三,格式,if ( expr1 ) statement1,else if (expr2 ) statement2,else if (expr3 ) statement3,else statementn,執(zhí)行過(guò)程,expr1,statemnt1,T,F,expr2,expr3,

12、statemntn,statemnt3,statemnt2,T,T,F,F,例,if (salary10000) index=0.25,else if (salary800) index=0.2,else if (salary600) index=0.15,else if (salary400) index=0.1,else index=0,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,如,if(a=b,if(3) printf(“OK”,if(a) printf(“%d”,a,說(shuō)明,if,后面的表達(dá)式類型任意,表達(dá)式的值為,0,表示,假,非,0,表示真,if,后面的子句可以是復(fù)合語(yǔ)

13、句,例,考慮下面程序的運(yùn)行結(jié)果,include,main(,int x,y,scanf(“%d,%d,if(xy,x=y; y=x,else,x+; y,printf(“%d,%d,n”,x,y,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,輸入,3,6,結(jié)果,4,7,輸入,5,2,結(jié)果,2,2,else,與,if,不匹配,Compile Error,if,語(yǔ)句嵌套,一般形式,if (expr1,if (expr2,statement1,else,statement2,內(nèi)嵌,if,if (expr1,if (expr2,statement1,else,statement2,內(nèi)嵌,if

14、,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,expr1,statement1,expr2,statement2,F,T,F,T,expr1,expr2,statement2,F,T,statement1,T,F,在,if,語(yǔ)句中又包含一個(gè),或多個(gè),if,語(yǔ)句,expr2,statement2,expr1,statement1,F,T,F,T,statement3,if (expr1,if (expr2) statement1,else statement2,else,if(expr3) statement3,else statement4,內(nèi)嵌,if,內(nèi)嵌,if,if (expr

15、1,statement1,else,if(expr2,statement2,else,statement3,內(nèi)嵌,if,statement2,statement1,statement3,expr1,F,T,expr3,expr2,statement4,F,T,F,T,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,例,3,_4,輸入兩數(shù)并判斷其大小關(guān)系,*ch4_4.c*,include,main(,int x,y,printf(Enter integer x,y:,scanf(%d%d,if(x!=y,if(xy) printf(XYn,else printf(XYn,else,pr

16、intf(X=Yn,運(yùn)行,Enter integer x,y:12 23,XY,Enter integer x,y:12 6,XY,Enter integer x,y:12 12,X=Y,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,if(,if(,if(,else,else,else,例,if (a=b,if(b=c,printf(“a=b=c”,else,printf(“a!=b”,修改,if (a=b,if(b=c,printf(“a=b=c”,else,printf(“a!=b”,實(shí)現(xiàn),if else,正確配對(duì)方法:加,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,

17、if else,配對(duì)原則:缺省,時(shí),else,總是和它上,面離它最近的未配對(duì)的,if,配對(duì),例,3,_5,寫出下面程序的運(yùn)行結(jié)果,main(,int x=100,a=10,b=20,int v1=5,v2=0,if(ab,if(b!=15,if(!v1,x=1,else,if(v2) x=10,x=-1,printf(“%d”,x,1,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,結(jié)果,100,else x=-1,switch,表達(dá)式,語(yǔ)句組,1,語(yǔ)句組,2,語(yǔ)句組,n,語(yǔ)句組,E 1,E 2,En,default,case,3.3,多分支結(jié)構(gòu),switch,語(yǔ)句,開關(guān)分支語(yǔ)句,一般

18、形式,switch,表達(dá)式,case E1,語(yǔ)句組,1,break,case E2,語(yǔ)句組,2,break,case En,語(yǔ)句組,n,break,default,語(yǔ)句組,break,執(zhí)行過(guò)程,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,說(shuō)明,E1,E2,En,是常量表達(dá)式,且值必須互不相同,常量表達(dá)式只起語(yǔ)句標(biāo)號(hào)作用,必須用,break,跳出,case,后可包含多個(gè)可執(zhí)行語(yǔ)句,且不必加,switch,可嵌套,多個(gè),case,可共用一組執(zhí)行語(yǔ)句,運(yùn)行結(jié)果,score,為,5,時(shí),輸出,Very good! Good! Pass! Fail! data error,如,case A,

19、case B,case C,printf(“score60,n”,break,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,例,考慮下面語(yǔ)句的執(zhí)行結(jié)果,switch(score,case 5: printf(“Very good!”,case 4: printf(“Good!”,case 3: printf(“Pass!”,case 2: printf(“Fail!”,default : printf(“data error!”,為什么,void main(,int x=1,y=0,a=0,b=0,switch(x,case 1,switch(y,case 0: a+; break,

20、case 1: b+; break,case 2: a+;b+; break,case 3: a+;b,printf,na=%d,b=%d”,a,b,運(yùn)行結(jié)果,a=2,b=1,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,例,3.3_1,寫出下面程序的運(yùn)行結(jié)果,*ch4_5.c*,include,main(,int c,printf(Enter m or n or h or other:,c=getchar(,switch(c,case m: printf( Good morning!n);break,case n: printf( Good night!n); break,case

21、 h: printf( Hello!n); break,default : printf( ?n); break,例,3.3_2,根據(jù)輸入字母輸出字符串,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,綜合舉例,分析:潤(rùn)年的條件,1,能被,4,但不能被,100,整除的年份是潤(rùn)年,2,能被,100,又能被,400,整除的年份是潤(rùn)年,3,不符合上述兩個(gè)條件的年份不是潤(rùn)年,我們以變量,year,代表某一,年,以標(biāo)志變量,flag,代表是否閏年的信息,若閏年,令,flag=1,否則令,flag=0,例,1,判定某一年是否潤(rùn)年,將結(jié)果輸出,

22、輸入年,year,year%4=0,T,F,F,year0=0,T,flag=0,year0=0,T,F,flag=1,flag=1,flag=0,flag,T,F,輸出”潤(rùn)年,輸出”非潤(rùn)年,year%4=0 expr2 ; expr3,循環(huán)體語(yǔ)句,執(zhí)行流程,expr2,循環(huán)體,假,0,真,非,0,for,expr1,expr3,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,for,語(yǔ)句一般應(yīng)用形式,for,循環(huán)變量賦初值;循環(huán)終值;修改循環(huán)變量,循環(huán)體語(yǔ)句,若省略,expr1,則應(yīng)在,for,語(yǔ)句之前給循環(huán)變量賦初值,若省略,expr3,則應(yīng)在循環(huán)體內(nèi)有修改循環(huán)變量的語(yǔ)句,否則循環(huán)

23、不能正常,結(jié)束,若,expr2,省略,死循環(huán),當(dāng)循環(huán)體由多個(gè)語(yǔ)句組成時(shí),必須用,括起來(lái),形成,復(fù)合語(yǔ)句,for,語(yǔ)句可以轉(zhuǎn)換成,while,結(jié)構(gòu),例,3.4_5,用,for,循環(huán)求,100,1,n,n,說(shuō)明,for,語(yǔ)句中,expr1, expr2 ,expr3,類型任意,都可省,略,但分號(hào);不可省。如,for(;,expr1,while,expr2,循環(huán)體語(yǔ)句,expr3,include,main(,int i,sum=0,for,i=1,i=100,i,sum+=i,printf(%d,sum,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,例,3.4_6,讀程序?qū)懡Y(jié)果,inclu

24、de,main(,int i,for(i=0;i=9;i+,putchar(a+i,運(yùn)行結(jié)果,include,main(,int i=0,for(;i10;i,putchar(a+i,include,main(,int i=0,for(;i=9;,putchar(a+(i,include,main(,int i=0,for(;i=9;putchar(a+i),i,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,循環(huán)體執(zhí)行次數(shù),終值,初值,步長(zhǎng),1,i=i+3,運(yùn)行結(jié)果,10,4,循環(huán)體執(zhí)行次數(shù),abcdefghij,adgj,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,例,

25、3.4_7,輸出,2000,年,2050,年中的所有潤(rùn)年,椣據(jù)畬敤尠瑳楤?屨,main(,int y,for(y=2000;y=2050;y,if(y%4=0getchar(,main(,int i,j,k,for(i=0,j=100;i=j;i+,j,k=i+j,printf(%d+%d=%dn,i,j,k,include,main(,char c,for,c=getchar()!=n,printf(%c ,c,include,main(,int i,c,for(i=0,c=getchar()!=n,i+=3,printf(%c ,i+c,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),

26、C,若循環(huán)終值未知,應(yīng)設(shè)置循環(huán)判斷條件,例,3.4_8,讀程序?qū)懡Y(jié)果,循環(huán)判斷條件,三,dowhile,語(yǔ)句,一般形式,do,循環(huán)體語(yǔ)句,while,表達(dá)式,執(zhí)行流程,do,循環(huán)體,expr,假,0,真,非,0,while,特點(diǎn):先執(zhí)行循環(huán)體,后判斷表達(dá)式,說(shuō)明,至少執(zhí)行一次循環(huán)體,dowhile,可轉(zhuǎn)化成,while,結(jié)構(gòu),語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,include,main(,int i,sum=0,i=1,do,sum+=i,i,while(i=100,printf(%d,sum,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,例,3.4_9,用,do

27、while,循環(huán)求,100,1,n,n,例,3.4_10,c,bx,ax,方程的解,求,0,2,3.4_9 while,和,dowhile,比較,main(,int i,sum=0,scanf(%d,do,sum+=i,i,while(i=10,printf(%d,sum,main(,int i,sum=0,scanf(%d,while(i=10,sum+=i,i,printf(%d,sum,運(yùn)行結(jié)果,9,19,運(yùn)行結(jié)果,11,11,運(yùn)行結(jié)果,11,0,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,while,語(yǔ)句:先判斷后執(zhí)行,do_while,語(yǔ)句:先執(zhí)行后判斷,當(dāng),while,

28、后的表達(dá)式的第一次的值為真時(shí),兩種循環(huán)的結(jié)果相同,否則不同,四,goto,語(yǔ)句及用,goto,語(yǔ)句和,if,語(yǔ)句構(gòu)成循環(huán),goto,語(yǔ)句一般格式,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,goto,語(yǔ)句標(biāo)號(hào),標(biāo)號(hào):語(yǔ)句,功能:無(wú)條件轉(zhuǎn)移語(yǔ)句,說(shuō)明,標(biāo)號(hào)標(biāo)識(shí)符要遵循“標(biāo)識(shí)符”的命名規(guī)則,標(biāo)號(hào)只能出現(xiàn)在,goto,所在函數(shù)內(nèi),且唯一,標(biāo)號(hào),只能加在可執(zhí)行語(yǔ)句前面,goto,語(yǔ)句是非結(jié)構(gòu)化語(yǔ)句,應(yīng)限制使用,用,goto,語(yǔ)句和,if,語(yǔ)句可以構(gòu)成循環(huán),限制使用,循環(huán)條件,循環(huán)初值,循環(huán)終值,循環(huán)變量增值,循環(huán)體,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,例,3.4_9,用

29、,ifgoto,循環(huán)求,100,1,n,n,include,main(,int i,sum=0,i=1,loop: if(i=100,sum+=i,i,goto loop,printf(%d,sum,例,3.4_10,從鍵盤輸入一組數(shù)據(jù),以,0,結(jié)束輸入,求數(shù)據(jù)和,include,main(,int number,sum=0,r_loop: scanf(%d,if(!number) goto print_sum,sum+=number,goto r_loop,p_sum: printf(The total sum is %dn,sum,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,注

30、意,goto,語(yǔ)句是非結(jié)構(gòu)化語(yǔ)句,大量使用會(huì)造成程序流向混,亂,可讀性差,因此結(jié)構(gòu)化程序設(shè)計(jì)一般不采用,goto,語(yǔ)句,t=1,pi=0,n=1.0,s=1,pi=pi+t,n=n+2,s=-s,t=s/n,分子,1,1,1,1,分母,1,3,5,7,為止,最后一項(xiàng)的絕對(duì)值小于,6,10,p,的近似值,直到,公式求,例,1,用,1,1,1,1,4,p,L,L,程序舉例,3,7,5,當(dāng),t,1e-6,pi=pi*4,輸出,pi,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,S,分子,n,分母,t,為,s/n,例,2,求,Fibonacci,數(shù)列,1,1,2,3,5,8,的前,40,個(gè)數(shù)

31、,f1=1,f2=1,for i=1 to 20,輸出,f1,f2,f1=f1+f2,f2=f2+f1,1,5,34,233,1597,10946,75025,514229,3524578,24157817,1,8,55,377,2584,17711,121393,832040,5702887,39088169,2,13,89,610,4181,28657,196418,1346269,9227465,63245986,3,21,144,987,6765,46368,317811,2178309,14930352,102334155,3,2,1,2,1,1,1,2,1,n,F,F,F,n,F,

32、n,F,n,n,n,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,遞推法,利用問題本身所具有的一種遞推關(guān)系,求問題的解,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,外層循環(huán)可包含兩個(gè)以上內(nèi)循環(huán),但不能相互交叉,嵌套循環(huán)的執(zhí)行流程,1) while(,while(,2) do,do,while(,while(,3) while(,do,while(,4) for( ; ;,do,while(,while(,內(nèi)循環(huán),外循環(huán),內(nèi)循環(huán),嵌套循環(huán)的跳轉(zhuǎn),禁止,從外層跳入內(nèi)層,跳入同層的另一循環(huán),循環(huán)的嵌套,三種循環(huán)可互相嵌套,層數(shù)不限,例,3.4_11,輸出九九表,1,2,3,4,

33、5,6,7,8,9,1,2,3,4,5,6,7,8,9,2,4,6,8,10,12,14,16,18,3,6,9,12,15,18,21,24,27,9,18,27,36,45,54,63,72,81,i,j,include,main(,int i,j,for(i=1;i10;i,printf(M,i,printf( -n,for(i=1;i10;i,for(j=1;j10;j,printf(M,i*j,牰湩晴尨屜,n”,外循環(huán),內(nèi)循環(huán),語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,for(i=1;i10;i,for(j=1;j10;j,printf(M,i*j,牰湩晴尨屜,n”,i

34、10,printf,假,0,真,非,0,i=1,j,j=1,j10,真,非,0,假,0,i,換行,例,3.4_12,求,50,1,n,n,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,分析,(1,采用雙重循環(huán),內(nèi)循環(huán),i,變量控制,求階乘,外循環(huán),n,變量控制,求階乘的和,2)P,為積變量,s,為和變量,main(,int i,n,long p,s=0,for(n=1;n50;i,p=1,for(i=1;i=n;i,p=p*i,s=s+p,printf(%ld “,s,思考,若采用單重循環(huán),程序應(yīng)作何修改,一,break,語(yǔ)句,功能:在循環(huán)語(yǔ)句和,switch,語(yǔ)句中,終止并跳出循,

35、環(huán)體或開關(guān)體,說(shuō)明,break,只能終止并跳出最近一層的結(jié)構(gòu),break,不能用于循環(huán)語(yǔ)句和,switch,語(yǔ)句之外的,任何其它語(yǔ)句之中,輔助控制語(yǔ)句,3.5,break,語(yǔ)句和,continue,語(yǔ)句,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,expr,break,假,0,真,非,0,while,do,break,expr,假,0,真,非,0,while,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,expr2,break,假,0,真,非,0,for,expr1,expr3,switch,expr,語(yǔ)句組,1,break,語(yǔ)句組,2,break,語(yǔ)句組,n,break

36、,語(yǔ)句組,break,const 1,const 2,const,n,default,case,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,例,3.5_1,輸出圓面積,面積大于,100,時(shí)停止,define PI 3.14159,main(,int r,float area,for(r=1;r=10;r,area=PI*r*r,if(area100,break,printf( =%d,area=%.2fn,r,area,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,例,3.5_2,小寫字母轉(zhuǎn)換成大寫字母,直至輸入非字,母字符,include,main(,int i,j,c

37、har c,while(1,c=getchar(,if(c=a i10;i,scanf(%d,if(a=0) continue,num,sum+=a,printf(%d plus integers sum :%6.0fn,num,sum,printf(Mean value:%6.2fn,sum/num,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,例,3.5_3,求輸入的十個(gè)整數(shù)中正數(shù)的個(gè)數(shù)及其,平均值,綜合舉例,例,1,判斷,m,是否素?cái)?shù),讀入,m,k=m-1,i=2,當(dāng),i,k,m,被,i,整除,真,假,用,break,結(jié)束循環(huán),i=i+1,i,k+1,真,假,輸出,m,是素?cái)?shù),

38、輸出,m,不是素?cái)?shù),語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,分析,1,所謂素?cái)?shù),是指除了,1,和該數(shù)本身之外,不能被其他任何整數(shù)整除的數(shù),2,將,m,作為被除數(shù),將,2,到,m-1,或,將,2,到,m/2,或,將,2,到,sqrt(m,各個(gè)整數(shù)輪流,作為除數(shù),如果都不能被整除,則,m,為素,數(shù),算法,s1,輸入,m,的值,s2: i=2,i,作為除數(shù),s3: m,被,i,除,得余數(shù),r,s4,若,r=0,表明,n,能被,i,整除,打印,n,不是素,數(shù)”,算法結(jié)束,否則執(zhí)行,s5,s5: i+1 =i,s6,若,i= m-1,返回,s3,否則打印,m,是素?cái)?shù),結(jié)束,窮舉法,將各種

39、組合的可能,性全部一一考慮到,其中符,合給定條件的為素?cái)?shù),例,2,寫出下列程序的結(jié)果,1,main(,int m,s,s=0,for(m=1;m=10;m,s=s+m,if(s5) break,printf(“s=%d,n”,s,2,main(,int k=0,s=0,m,for(m=1;m=5;m,s=s+m,if(s5,printf(%d,%d,%dn,m,s,k,continue,k=k+s,printf(%d,%d,%dn,m,s,k,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,運(yùn)行結(jié)果,運(yùn)行結(jié)果,3,main(,int m=0,s=0,do,if(m%2) m+;continue,m,s+=m,while(m7,printf(%dn,s,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,運(yùn)行結(jié)果,16,例,3,輸出所有的“水仙花數(shù),水仙花數(shù):一個(gè)三位數(shù),其各位數(shù)字的立方和等于該數(shù),本身。如,153=1,3,5,3,3,3,語(yǔ),言,程,序,設(shè),計(jì),第,三,章,控,制,結(jié),構(gòu),C,for(i=100

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論