![kj-第5章循環(huán)結(jié)構(gòu)程序的設(shè)計(jì)ppt課件(全)_第1頁](http://file4.renrendoc.com/view/eec7adfc57b6977ea8e7f280bfbb0f3c/eec7adfc57b6977ea8e7f280bfbb0f3c1.gif)
![kj-第5章循環(huán)結(jié)構(gòu)程序的設(shè)計(jì)ppt課件(全)_第2頁](http://file4.renrendoc.com/view/eec7adfc57b6977ea8e7f280bfbb0f3c/eec7adfc57b6977ea8e7f280bfbb0f3c2.gif)
![kj-第5章循環(huán)結(jié)構(gòu)程序的設(shè)計(jì)ppt課件(全)_第3頁](http://file4.renrendoc.com/view/eec7adfc57b6977ea8e7f280bfbb0f3c/eec7adfc57b6977ea8e7f280bfbb0f3c3.gif)
![kj-第5章循環(huán)結(jié)構(gòu)程序的設(shè)計(jì)ppt課件(全)_第4頁](http://file4.renrendoc.com/view/eec7adfc57b6977ea8e7f280bfbb0f3c/eec7adfc57b6977ea8e7f280bfbb0f3c4.gif)
![kj-第5章循環(huán)結(jié)構(gòu)程序的設(shè)計(jì)ppt課件(全)_第5頁](http://file4.renrendoc.com/view/eec7adfc57b6977ea8e7f280bfbb0f3c/eec7adfc57b6977ea8e7f280bfbb0f3c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5章 循環(huán)結(jié)構(gòu)程序的設(shè)計(jì)本章概述 本章的學(xué)習(xí)目標(biāo)主要內(nèi)容1本章概述本章主要通過大量程序?qū)嵗榻Bwhile、do-while及for循環(huán)結(jié)構(gòu)的使用方法本章還將介紹初學(xué)者編程難點(diǎn)之一的多重循環(huán)結(jié)構(gòu)的使用方法在本章中還會(huì)介紹較多的程序算法2本章的學(xué)習(xí)目標(biāo)本章教學(xué)目的:掌握幾種循環(huán)語句(goto、while、do-while、for)的使用方法掌握break和continue語句的使用方法能使用嵌套方法編寫程序。本章教學(xué)重點(diǎn):掌握while、do-while、for循環(huán)語句本章教學(xué)難點(diǎn):循環(huán)嵌套3主要內(nèi)容5.1 while語句和do-while語句5.2 for語句5.3 嵌套循環(huán)結(jié)構(gòu)5.4 bre
2、ak語句和continue語句5.5 goto語句和用goto語句構(gòu)成的循環(huán)5.6 程序設(shè)計(jì)舉例5.7 本章小結(jié) 4 5.1 while語句和do-while語句while語句用來實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu),其一般形式如下: while(表達(dá)式) 循環(huán)體語句其執(zhí)行過程是:計(jì)算表達(dá)式的值,若表達(dá)式為非0值時(shí),執(zhí)行while語句中的循環(huán)體語句,并再次計(jì)算表達(dá)式的值,此過程重復(fù)執(zhí)行,一直到表達(dá)式的值為0,循環(huán)結(jié)束。5.1.1 while語句5例 5.1 求1+3+5+7+99的值# include int main() int i,n,sum=0; i=1; while(i=99) sum+=i; i+=
3、2; printf(sum=%dn,sum); return 0; 6對(duì)于while語句,有幾點(diǎn)需要注意:(1)循環(huán)體若包含一個(gè)以上的語句,應(yīng)該用花括弧括起來。若不加花括弧,則while循環(huán)體語句的范圍只到while后面第一個(gè)分號(hào)處。(2)若表達(dá)式的值為0,循環(huán)體一次也不執(zhí)行.(3)在循環(huán)體中一定要有使循環(huán)趨向于結(jié)束的語句,否則循環(huán)永不結(jié)束,形成死循環(huán)。75.1.2 do-while語句一般格式: do 循環(huán)體語句組; while(循環(huán)繼續(xù)條件); /*分號(hào)不能缺省*/思考題:例題5.1用do-while語句如何來實(shí)現(xiàn)?8執(zhí)行過程:(1)先執(zhí)行循環(huán)體語句組。(2)計(jì)算“循環(huán)繼續(xù)條件”表達(dá)式。若
4、“循環(huán)繼續(xù)條件”表達(dá)式的值為非 0(真),則轉(zhuǎn)向(1)繼續(xù)執(zhí)行;否則,轉(zhuǎn)向(3)。(3)執(zhí)行do-while的下一條語句。do-while循環(huán)語句最重要的特點(diǎn)是:先執(zhí)行一次循環(huán)體語句組,然后再判斷循環(huán)條件。9例5.2 從鍵盤輸入若干個(gè)數(shù)求和,當(dāng)和大于200時(shí)停止執(zhí)行。# include int main()int x,sum=0; do scanf(%d,&x); sum+=x; while(sum=200); printf(sum=%dn,sum); return 0; 10本題思路:為了實(shí)現(xiàn)逆序輸出一個(gè)正整數(shù),需要把該數(shù)按逆序逐位拆開,然后輸出。從一個(gè)數(shù)中分離一位數(shù),可以對(duì)10求余.345
5、 num 345%10=5 digit345/10=34 num 34%10=4 digit34/10=3 num 3%10=3 digit3/10=0 num當(dāng)num最后變成0時(shí),處理過程結(jié)束。 賦值給例5.3 從鍵盤輸入一個(gè)正整數(shù),各位數(shù)碼順序顛倒輸出。如輸入345,輸出543。 # include int main()int num,digit; printf(Input a number: ); scanf(%d,&num); do digit=num%10; printf(%d,digit); num/=10; while(num!=0); printf(n); return 0;
6、11 5.2 for語句1、一般格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體語句組; (1)若表達(dá)式1存在,則先計(jì)算表達(dá)式l的值,然后轉(zhuǎn)向步驟(2),若表達(dá)式1不存在,則直接進(jìn)入步驟(2)。 (2)計(jì)算表達(dá)式2的值,若其值為真(值為非0),則執(zhí)行for語句中指定的循環(huán)體語句,然后執(zhí)行下面第(3)步。若為假(值為0)則結(jié)束循環(huán),轉(zhuǎn)到第(4)步。 (3)若表達(dá)式3存在,則計(jì)算表達(dá)式3的值,然后轉(zhuǎn)向步驟(2),若表達(dá)式3不存在,則直接轉(zhuǎn)向步驟(2)。 (4)循環(huán)結(jié)束,執(zhí)行for語句下面的一個(gè)語句。 圖5.3for語句流程圖12 for語句是C語言中最靈活也是應(yīng)用最廣泛的循環(huán)結(jié)構(gòu),可以替代wh
7、ile和do-while語句思考題:例題5.1用for語句如何實(shí)現(xiàn)?例5.4輸入一個(gè)110間的整數(shù),用for語句求這個(gè)數(shù)的階乘。main()int i,sum;for(sum=0,i=1;i=99;i=i+2) sum=sum+i;printf(“the num is %d”,sum);# include int main()int i,n; long s=1; scanf(%d,&n); for(i=1;i=n;i+) s*=i; printf(%d!=%ldn,n,s); return 0; 131、for后面括號(hào)里的3個(gè)表達(dá)式都可以省略,但其中的兩個(gè)分號(hào)不能省略 for( ; ; ) p
8、rintf(“#”);2、若表達(dá)式1被省略,則應(yīng)在for語句之前給循環(huán)變量賦初值。 i=1; sum=0; for(;i=10; i+) sum+=i;3、若表達(dá)式2被省略,即不判斷循環(huán)條件,則循環(huán)無終止地進(jìn)行下去。也就是認(rèn)為表達(dá)式2始終為真4、若表達(dá)式3被省略,則程序設(shè)計(jì)者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束。 for語句需要注意的是:145、若省略表達(dá)式1和表達(dá)式3,只有表達(dá)式2,即只給循環(huán)條件,則在這種情況下,完全等同于while語句 i=1; sum=0; for(;i=10; ) sum+=i; i+; 6、若3個(gè)表達(dá)式都省略時(shí),則無終止地循環(huán)7、表達(dá)式1可以是設(shè)置循環(huán)變量初值的賦值表達(dá)式,
9、也可以是與循環(huán)變量無關(guān)的其他表達(dá)式例如:for(sum=0,i=0;i=10;i+) sum+=i;8、表達(dá)式2可以是任何合法的C語言表達(dá)式 只要其值為非零,就執(zhí)行循環(huán)體 15例5.5 輸入一行字符并計(jì)算出字符個(gè)數(shù) #includeint main() int n=0; printf(Input a string: ); for(; getchar()!=n; n+); printf(%dn,n); 程序中的循環(huán)條件為getchar()!=n,判斷從鍵盤輸入的字符是不是回車。165.3 嵌套循環(huán)結(jié)構(gòu) 循環(huán)的嵌套是指一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu)。內(nèi)嵌的循環(huán)中還可以嵌套循環(huán),這就是多層循
10、環(huán)。 while循環(huán)、dowhile循環(huán)和for循環(huán)不僅可以自身嵌套,而且可以互相嵌套 例5.6 在屏幕上輸出如下的一張九九乘法表1*1=11*2=2 2*2=4 1*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=491*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=641*
11、9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 17 思路: 九九乘法表,共有9行;我們可以用一個(gè)循環(huán)變量i來依次表示第i(1 i 9)行; 對(duì)于第i行來說,它又有i個(gè)等式, 可以用一個(gè)循環(huán)變量j來依次表示第j(1 j i)個(gè)等式;第i行第j列的等式剛好是j和i相乘的式子。 # include int main()int i,j; for(i=1;i10;i+) for(j=1;j=i;j+) printf(%d*%d=%-3d,j,i,i*j); printf(n); return 0; 18例5.7 在計(jì)算機(jī)屏幕上輸出
12、如下圖形。 * * * *思路: 上述圖形中,共有5行,可以通過循環(huán)依次輸出每一行。 每一行中可分成兩部分,前面由若干個(gè)空格組成,后面是由若干個(gè)星號(hào)組成。具體空格和星號(hào)由當(dāng)前的行數(shù)來決定 。# include int main()int i,j,k,n=5; for(i=0;in;i+) for(j=0;jn-i;j+) printf( ); for(k=0;k=2*i;k+) printf(*); printf(n); return 0; 195.4 break語句和continue語句while(表達(dá)式) 語句塊1 if(條件) break; 語句塊2 1、break語句 break語句可
13、以用來從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語句。 格式如下:20例5.8 輸入一個(gè)正整數(shù)m,判斷它是否為素?cái)?shù)。思路:判斷一個(gè)數(shù)m否為素?cái)?shù),需要檢查該數(shù)m是否能被2 m-1之間的整數(shù)整除。數(shù)學(xué)上能證明,只需要檢查該數(shù)m是否能被2 之間的整數(shù)整除即可 。設(shè)i取2, 上的整數(shù),如果m不能被該區(qū)間上的任何一個(gè)數(shù)整除,即對(duì)每一個(gè)i,m%i都不為0,則m是素?cái)?shù);但是只要找到一個(gè)i,使m%i為0,則m肯定不是素?cái)?shù) 。#includeint main()int i,m,k; printf(Input a number: ); scanf(%d,&m); k=sqrt(m); for(i=2
14、;i=k;i+) if(m%i=0) break; if(i=k) printf(%d is not a prime number.n,m); else printf(%d is a prime number.n,m); return 0; 212、continue語句格式如下:while(表達(dá)式) 語句塊1 if(條件) continue; 語句塊2 continue語句作用為結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定。思考題:continue語句和break語句的區(qū)別?22例5.9 輸入100個(gè)整數(shù),求其中正整數(shù)之和 思路:在輸入了100個(gè)數(shù)以后,累加
15、之前判斷該數(shù)是否是正數(shù),若是則累加,否則則將該數(shù)忽略(即跳出本次循環(huán))。# include int main()int i=0,n; long sum=0; while (i100) scanf(%d,&n); i+; if (n=0) continue; sum+=n; printf(sum=%ldn,sum);return 0; 235.5 goto語句和用goto語句構(gòu)成循環(huán)C語言中,goto語句為無條件轉(zhuǎn)向語句。一般形式為: goto 語句標(biāo)號(hào);功能:無條件使程序的流程從當(dāng)前所在的位置,轉(zhuǎn)向標(biāo)號(hào)所指定的語句位置執(zhí)行。使用goto語句,需要注意以下幾點(diǎn):(1)語句標(biāo)號(hào)用標(biāo)識(shí)符表示,它的命
16、名規(guī)則與變量名相同,即由字母、數(shù)字和下劃線組成,其第一個(gè)字符必須為字母或下劃線。不能用整數(shù)來做標(biāo)號(hào)。 例如:“ goto label_123;” 是合法的, 而 “ goto 123;” 是不合法的。(2) 在帶標(biāo)號(hào)的語句中,語句標(biāo)號(hào)與語句之間用冒號(hào)作分隔。例如: label_123 : a=50;24goto語句與if語句一起構(gòu)成循環(huán)結(jié)構(gòu),如下的例子即是二者組成的循環(huán)結(jié)構(gòu)。例5.10 用if語句和goto語句構(gòu)成循環(huán),求1+2+3+n的值。# include int main() int i,n,sum=0; i=1; scanf(“%d”,&n); loop: if(i=n) sum+=i
17、; i+; goto loop; printf(sum=%dn,sum); return 0; goto語句可使程序的流程變的毫無規(guī)律、可讀性差,在程序設(shè)計(jì)中盡量不用。255.6 程序設(shè)計(jì)舉例例5.11 利用下面的格里高利公式求 的近似值,要求精確到最后一項(xiàng)的絕對(duì)值小于10-6為止。類似的,請(qǐng)考慮:計(jì)算1-1/2+1/3-1/4+.+1/99-1/100的值。# include # include int main()float i=1.0;int k=1; double t=1.0,pi=0; do pi=pi+t; i+=2; k=-k; t=k/i; while(fabs(t)=1e-6
18、); pi*=4; printf(pi=%fn,pi); return 0; 程序運(yùn)行結(jié)果:pi=3.141691 這是一個(gè)求累加和的問題,通過循環(huán),把第i項(xiàng)加到pi中。第i項(xiàng)用變量t表示,在每次循環(huán)中其值都會(huì)改變。要注意每一項(xiàng)的構(gòu)成,如分母、分子以及符號(hào)等。 具體程序如右面所示:26例5.12 古代某工地需要搬磚塊,已知男人一人搬3塊,女人一人搬2塊,小孩兩人搬1塊。問用45人正好搬45塊磚,有多少種搬法。 思路: 這是一個(gè)組合問題,由3個(gè)因數(shù)決定組合的數(shù)量(即搬法的種數(shù)):男人、女人和小孩的人數(shù),人數(shù)的取值范圍為045,各類人數(shù)的取值與其他類人數(shù)的取值無關(guān),但最后加起來正好45人。因此對(duì)于
19、每類人數(shù)的取值都要反復(fù)地試,最后確定正好滿足45人搬45塊磚的組合。 27# include int main()int men,women,child; for(men=0;men=45;men+) for(women=0;women=45;women+) for(child=0;child=45;child+) if(men+women+child=45 & men*3+women*2+child*0.5=45) printf(men=%d women=%d child=%dn, men,women,child); return 0; 程序運(yùn)行結(jié)果:men=0 women=15 child
20、=30men=3 women=10 child=32men=6 women=5 child=34men=9 women=0 child=3628改進(jìn)后的程序如下:# include int main()int men,women,child; for(men=0;men=15;men+) for(women=0;women=22;women+) child=45-men-women; if(men*3+women*2+child*0.5=45) printf(men=%d women=%d child=%dn, men,women,child); return 0; 上述程序有一些值得改進(jìn)的地方。由于最多只有45塊磚,男人的數(shù)量不會(huì)超過15人,女人的數(shù)量不會(huì)超過22人,而且男人和女人的數(shù)量確定下來后,小孩的數(shù)量是: 小孩數(shù)=45-男人數(shù)-女人數(shù)29例5.13 輸入兩個(gè)正整數(shù)m和n,求它們的最大公約數(shù)和最小公倍數(shù)。 分析:我們考慮所有可能的情況,包括這兩個(gè)數(shù)互質(zhì)(公約數(shù)是1)情況。若k是m和n的公約數(shù),則k的值可能是1(兩個(gè)數(shù)互質(zhì))、可能是2、可能是3、可能q(q是m和n中的最小數(shù)),所以我們可以使用循環(huán)方法
溫馨提示
- 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 淺灘海域施工方案
- 辦公室裝修終止合同聲明
- 汽車制造液氮配送合同
- 親子游泳館裝修合同管理費(fèi)
- 倉(cāng)儲(chǔ)物流中心改造拆除協(xié)議
- 北城小學(xué)1年級(jí)數(shù)學(xué)試卷
- 銀行柜臺(tái)施工方案
- 安師大附中初三數(shù)學(xué)試卷
- 鋁掛片吊頂施工方案
- 司機(jī)不定時(shí)工作制合同范例
- 2015-2022年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招語文/數(shù)學(xué)/英語筆試參考題庫(kù)含答案解析
- 2023年菏澤醫(yī)學(xué)??茖W(xué)校單招綜合素質(zhì)模擬試題及答案解析
- 鋁合金門窗設(shè)計(jì)說明
- 常見食物的嘌呤含量表匯總
- 小學(xué)數(shù)學(xué)-三角形面積計(jì)算公式的推導(dǎo)教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 人教版數(shù)學(xué)八年級(jí)下冊(cè)同步練習(xí)(含答案)
- SB/T 10752-2012馬鈴薯雪花全粉
- 2023年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招(英語)試題庫(kù)含答案解析
- 秦暉社會(huì)主義思想史課件
- 積累運(yùn)用表示動(dòng)作的詞語課件
- 機(jī)動(dòng)車登記證書英文證書模板
評(píng)論
0/150
提交評(píng)論