C語言程序設(shè)計PPT教學(xué)課件第五章 循環(huán)結(jié)構(gòu)程序設(shè)計
《C語言程序設(shè)計PPT教學(xué)課件第五章 循環(huán)結(jié)構(gòu)程序設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《C語言程序設(shè)計PPT教學(xué)課件第五章 循環(huán)結(jié)構(gòu)程序設(shè)計(27頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、復(fù)習(xí) 選擇程序設(shè)計 if (表達式1) 語句1 else if (表達式2) 語句2; else 語句3; 條件 簡單條件通常是兩個數(shù)據(jù)的大小關(guān)系。 復(fù)雜條件通常是簡單條件的與、或、非關(guān)系。 切記:切記:1=x=1&x10才是正確的表示。才是正確的表示。 if語句可以實現(xiàn)選擇功能。 if語句根據(jù)數(shù)值反向推知條件是否成立。 0 表示條件不成立 非0表示條件成立 #include main() char c1=C,c2=h,c3=i,c4=n,c5=a; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; putchar(c1); putchar(c2); putchar(c3)
2、; putchar(c4); putchar(c5); printf(“密碼是%c %c %c %c %cn”,c1,c2,c3,c4,c5); 輸入”china”Cn=cn+4輸出84頁第6第五章第五章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計 分析與設(shè)計分析與設(shè)計 語言描述語言描述 分析執(zhí)行過程分析執(zhí)行過程問題 算法 程序 計算機 生活中經(jīng)常遇到需要重復(fù)處理的問題輸入全班50個同學(xué)的成績、統(tǒng)計全班50個同學(xué)的平均成績檢查30個同學(xué)的成績是否合格5.1 為什么需要循環(huán)結(jié)構(gòu)為什么需要循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)的特點循環(huán)結(jié)構(gòu)的特點程序的流程是在給程序的流程是在給定條件時,反復(fù)執(zhí)定條件時,反復(fù)執(zhí)行某個程序段。行某個
3、程序段。開始開始循環(huán)變量循環(huán)變量= =初值初值循環(huán)變量循環(huán)變量 終終值值執(zhí)行循環(huán)體執(zhí)行循環(huán)體循環(huán)變量循環(huán)變量= =循環(huán)變量循環(huán)變量+ +步長步長結(jié)束結(jié)束YESYESNO循環(huán)結(jié)構(gòu)中的兩個概念循環(huán)結(jié)構(gòu)中的兩個概念循環(huán)體循環(huán)體循環(huán)條件循環(huán)條件什么是循環(huán)結(jié)構(gòu)什么是循環(huán)結(jié)構(gòu)如何實現(xiàn)循環(huán)結(jié)構(gòu)如何實現(xiàn)循環(huán)結(jié)構(gòu)5.2 5.2 用用whilewhile語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)執(zhí)行過程執(zhí)行過程(1 1)先計算表達式的值)先計算表達式的值 ;(2 2)表達式的值為真)表達式的值為真( (非非0)0) 時執(zhí)行循環(huán)體中的語句;時執(zhí)行循環(huán)體中的語句;(3 3)重復(fù)上面步驟。)重復(fù)上面步驟。(4 4)表達式的值為假)表達式
4、的值為假(0) (0) ,則,則 結(jié)束循環(huán)。結(jié)束循環(huán)。while (表達式表達式) 語句語句可以是邏輯表達式、關(guān)系表達式、可以是邏輯表達式、關(guān)系表達式、算數(shù)表達式(非算數(shù)表達式(非0 0為真,為真,0 0為假)。為假)。while (3)while (3)和和while (0) while (0) 從程序設(shè)從程序設(shè)計的角度上說不合理,但是合法的。計的角度上說不合理,但是合法的。例如:例如:while (3) 表示無限循環(huán)表示無限循環(huán)while (0) 表示不進入循環(huán)體表示不進入循環(huán)體一一. .用用whilewhile語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)例例1 1:任意輸入十個數(shù):任意輸入十個數(shù), ,求它們
5、的和求它們的和. .main() int i=0; float s=0,x; while (i10) scanf(“%f”,&x); s=s+x; i+; printf(“s=%fn”,s); while(i100)例例3 3:輸入一串字符,求字符個數(shù)。:輸入一串字符,求字符個數(shù)。main()char i; int n=0; i=; while(i!=n) scanf(“%c”,&i); n=n+1; printf(“n=%d”,n);例例2 2:求:求1+2+3+.+1001+2+3+.+100的和。的和。main()int i,sum; i=1;sum=0; while(i=100) su
6、m=sum+i; i=i+1; printf(“sum=%d”,sum);while(i100)例例4 4:計算:計算1010!main() int i=1; long int t=1; while (i=10) t=t*i; i+; printf(“10!=%ldn”,t); 例題例題5:找出任意輸入的十個數(shù)中最大的一個。:找出任意輸入的十個數(shù)中最大的一個。main()float x;int n; scanf(“%f”,&x); n=1; while(n10) scanf(“%f”,&y); n=n+1; if(xy) x=y; printf(“the max data is%f”,x);5
7、.3 5.3 用用dowhiledowhile語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)一般形式一般形式分號不能少do語句語句 while(表達式);表達式);執(zhí)行過程執(zhí)行過程先執(zhí)行循環(huán)體中的語句;先執(zhí)行循環(huán)體中的語句;測試循環(huán)條件,為真測試循環(huán)條件,為真(非非0)則重復(fù)上面步驟,為假則重復(fù)上面步驟,為假(0)結(jié)束循環(huán)。結(jié)束循環(huán)。例:將上面計算例:將上面計算1010!并輸出結(jié)果的程序用!并輸出結(jié)果的程序用do-whiledo-while語句寫出:語句寫出:main() int i=1; long int t=1; while (i=10) t=t*i; i+; printf(“10!=%ldn”,t); mai
8、n() int i=1; long int t=1; do t=t*i; i+; while (i=10); printf(“10!=%ldn”,t); 我們將我們將while和和do-while循環(huán)做一下比較循環(huán)做一下比較:main() int i; long t=1; scanf(“%d”,&i); while (i=10) t=t*i; i+; printf(“%ldn”,t); main() int i; long t=1; scanf(“%d”,&i); do t=t*i; i+; while (i=10); printf(“%ldn”,t); 輸入:9輸出:90輸入:11輸出:1輸
9、入:9輸出:90輸入:11輸出:11while語句進入循環(huán)體語句進入循環(huán)體之前,測試循環(huán)條件,之前,測試循環(huán)條件,表達式必須為真,否表達式必須為真,否則則while循環(huán)不進入循循環(huán)不進入循環(huán)體,即環(huán)體,即循環(huán)體可能循環(huán)體可能一次也不執(zhí)行一次也不執(zhí)行。do-while語句不管開始的時語句不管開始的時候測試循環(huán)條件是真是假,候測試循環(huán)條件是真是假,循環(huán)體都要執(zhí)行一次,因循環(huán)體都要執(zhí)行一次,因為循環(huán)體是先于測試條件為循環(huán)體是先于測試條件執(zhí)行的。執(zhí)行的。main()int i,s; i=1;s=0; while(i=100) s=s+i; i=i+1; printf(“sum=%d”,s);5.4 5
10、.4 用用forfor語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán) 不能省略不能省略不能省略不能省略一般形式:一般形式:for(for(表達式表達式1 1 ;表達式;表達式2 2;表達式;表達式3) 3) 語句語句例題例題1:求:求1+2+3+.+100的和。的和。main() int i,s=0; for (i=1;i=100;i+) s=s+i; printf(“s=%d”,s);執(zhí)行過程:執(zhí)行過程: 求出表達式求出表達式1的值;的值; 對對“表達式表達式2”進行判斷,若條件為真執(zhí)行循環(huán)體;進行判斷,若條件為真執(zhí)行循環(huán)體;求解求解“表達式表達式3”;轉(zhuǎn)回(轉(zhuǎn)回(2)繼續(xù)執(zhí)行;)繼續(xù)執(zhí)行;循環(huán)結(jié)束,執(zhí)行循環(huán)結(jié)束
11、,執(zhí)行for下面的語句。下面的語句。main() int i=1; long int t=1; while (i=10) t=t*i; i+; printf(“10!=%ldn”,t); 例例2 2:將上面計算:將上面計算1010!的程序用!的程序用 forfor語句寫出:語句寫出:main() int i; long t; t=1; for(i=1; i=10; i+) t=t*i; printf(“10!=%ldn”,t); 說明說明:表達式表達式1 1:進入循環(huán)體之前給某些變量賦初值。若省:進入循環(huán)體之前給某些變量賦初值。若省略,可在略,可在forfor語句前給變量賦初值。語句前給變量賦
12、初值。main() int i=1; long sum=1; for( ; i=10; i+) sum=sum*i; printf(“10!=%ldn”,sum); for for 循環(huán)的三個表達式起著不同的作用,根據(jù)需要可以省略。循環(huán)的三個表達式起著不同的作用,根據(jù)需要可以省略。表達式表達式2:決定循環(huán)的條件,若省略,則為無限循環(huán)。:決定循環(huán)的條件,若省略,則為無限循環(huán)。如:如: for(i0; ;i+) 語句語句表達式表達式3 3:用于循環(huán)一次后對某些變量進行修改。若:用于循環(huán)一次后對某些變量進行修改。若省略,可在循環(huán)體內(nèi)對變量進行修改省略,可在循環(huán)體內(nèi)對變量進行修改 main() int
13、 i; long sum=1; for(i=1 ; i=10 ; ) sum=sum*i; i+; printf(“10!=%ldn”,sum); for 語句最為靈活,它完全可以代替的語句最為靈活,它完全可以代替的while語句。語句。如:如:i=1; while(i=10) sum=sum*i; i+; 等效于for(i=1;ib,則兩個數(shù)的最大公,則兩個數(shù)的最大公約數(shù)一定在約數(shù)一定在1,b之間。之間。設(shè)置一個循環(huán)變量設(shè)置一個循環(huán)變量i,使其從,使其從1增加到增加到b,依此測試變,依此測試變量量i能否同時整除整數(shù)能否同時整除整數(shù)a和和b。如果能,則把。如果能,則把i的值放的值放到一個變量到
14、一個變量s中。循環(huán)結(jié)束時,中。循環(huán)結(jié)束時,s中保留的值就是所中保留的值就是所要的結(jié)果。要的結(jié)果。 第一個公約數(shù)就是最大公約數(shù),因此在找到第一個公第一個公約數(shù)就是最大公約數(shù),因此在找到第一個公約數(shù)之后,應(yīng)該強行終止循環(huán)。約數(shù)之后,應(yīng)該強行終止循環(huán)。 使用使用break語句,可以強行終止語句,可以強行終止break語句所在的循環(huán)。語句所在的循環(huán)。 main() int a,b,i; scanf(“%d%d”,&a,&b); if (a=1; i-) if(a%i=0&b%i=0) break; printf(“%dn”,i); 7 9 8 4 算法思想:窮舉法 素數(shù)就是能夠被1和其自身整除的自然數(shù)
15、。 設(shè)置一個循環(huán)變量i,使其從2變化到m-1,在循環(huán)體內(nèi) 測試每一個i的值,看能否整除m,只要有一個i能被m整除,說明m不是素數(shù),強行終止循環(huán)。此時i一定小于或等于m-1。 當(dāng)所有i值都不能整除m時,循環(huán)自動結(jié)束。此時i一定大于或等于m。 因此:若i大于或等于m,則m為素數(shù),若i小于或等于m-1則m不是素數(shù)。 main() int m,I; scanf(“%d”,&m); for(i=2;i=m) printf(“%d is prime number.n”,m); else printf(“%d is not a prime number.n”,m); m=5,m=8練習(xí):判斷一個自然數(shù)m(m
16、1)是否為素數(shù)一個循環(huán)外面包圍一層循環(huán)稱為二重循環(huán)。一個循環(huán)外面包圍一層循環(huán)稱為二重循環(huán)。一個循環(huán)外面包圍二層循環(huán)稱為三重循環(huán)。一個循環(huán)外面包圍二層循環(huán)稱為三重循環(huán)。一個循環(huán)外面包圍多層循環(huán)稱為多重循環(huán)。一個循環(huán)外面包圍多層循環(huán)稱為多重循環(huán)。 while、do-while、for可互相嵌套自由組合??苫ハ嗲短鬃杂山M合。 什么叫循環(huán)嵌套?什么叫循環(huán)嵌套?一個循環(huán)的循環(huán)體中套有另一個循環(huán)叫循環(huán)一個循環(huán)的循環(huán)體中套有另一個循環(huán)叫循環(huán)嵌套。這種嵌套過程可以一直重復(fù)下去。嵌套。這種嵌套過程可以一直重復(fù)下去。5.5 5.5 循環(huán)的嵌套循環(huán)的嵌套例例1:打印如下圖形:打印如下圖形: * * * * * ma
17、in()int i,j; for (i=1;i=5;i+) for (j=1;j=i;j+) printf(“*”); printf(“n”);例例2:求:求3!+5!+7!+9!main()int i,j; long t,s=0; for (i=3;i=9;i=i+2) t=1; for(j=1;j=i;j+) t=t*j; s=s+t; printf(“s=%ld”,s);例例1:打印如下圖形:打印如下圖形: * * * main()int i,j; for (i=1;i=3;i+) for (j=1;j=3-i;j+) printf(“ ”);for (j=1;j=2*i-1;j+) p
18、rintf(“*”); printf(“n”);5.6 5.6 幾種循環(huán)語句的比較幾種循環(huán)語句的比較 共同特點:循環(huán)控制條件非零時,執(zhí)行循環(huán)體,否則終止循環(huán)。共同特點:循環(huán)控制條件非零時,執(zhí)行循環(huán)體,否則終止循環(huán)。循環(huán)體語句可以是任何語句:簡單語句、復(fù)合語句、空語句。循環(huán)體語句可以是任何語句:簡單語句、復(fù)合語句、空語句。whilewhile和和forfor:先判斷先判斷循環(huán)控制條件,循環(huán)體可能一次也不執(zhí)行;循環(huán)控制條件,循環(huán)體可能一次也不執(zhí)行; do-whiledo-while:后判斷后判斷循環(huán)控制條件,循環(huán)體至少執(zhí)行一次。循環(huán)控制條件,循環(huán)體至少執(zhí)行一次。在循環(huán)體內(nèi)或循環(huán)條件中必須有使循環(huán)趨
19、于結(jié)束的語句,否則會在循環(huán)體內(nèi)或循環(huán)條件中必須有使循環(huán)趨于結(jié)束的語句,否則會出現(xiàn)死循環(huán)等異常情況。出現(xiàn)死循環(huán)等異常情況。三種循環(huán)可以處理同一問題,一般情況可以互相代替。實際應(yīng)用三種循環(huán)可以處理同一問題,一般情況可以互相代替。實際應(yīng)用中,根據(jù)具體情況來選用不同的循環(huán)語句。中,根據(jù)具體情況來選用不同的循環(huán)語句。5.7 5.7 改變循環(huán)執(zhí)行的狀態(tài)改變循環(huán)執(zhí)行的狀態(tài)一、一、break break 語句語句一般形式:一般形式:break ;break ;功能:結(jié)束當(dāng)前的一層循環(huán)。功能:結(jié)束當(dāng)前的一層循環(huán)。一般用在循環(huán)體的條件語句中,一般用在循環(huán)體的條件語句中,作用:當(dāng)某個條件成立時用作用:當(dāng)某個條件成立
20、時用breakbreak語語句退出循環(huán),不再繼句退出循環(huán),不再繼續(xù)執(zhí)行其余的幾次循環(huán)。續(xù)執(zhí)行其余的幾次循環(huán)。例題:打印半徑為例題:打印半徑為110的圓的的圓的面積,如果面積超過面積,如果面積超過100,則,則不再打印。不再打印。#include #define PI 3.14159main() int r; float area; for(r=1; r100.0) break; printf(area=%fn,area); printf(now, r=%dn,r); 二、二、continue語句語句 一般形式:一般形式:continue ;功能:提前結(jié)束循環(huán)體,功能:提前結(jié)束循環(huán)體,進入下一循
21、環(huán)周期。進入下一循環(huán)周期。一旦執(zhí)行了一旦執(zhí)行了continuecontinue語語句,程序就跳過循環(huán)體句,程序就跳過循環(huán)體中位于該語句后的所有中位于該語句后的所有語句,提前結(jié)束本次循語句,提前結(jié)束本次循環(huán)周期并開始下一個循環(huán)周期并開始下一個循環(huán)周期。環(huán)周期。例:計算用戶輸入的所有正整數(shù)例:計算用戶輸入的所有正整數(shù)的和,用戶輸入的和,用戶輸入 0 時結(jié)束。時結(jié)束。 #include main() long data, sum; sum = 0; do printf(“Please input : data=”); scanf(%ld, &data); if( data 0 ) continue; sum = sum + data; while( data != 0 );作業(yè):140頁4、141頁16題 下周交實驗報告112頁7題 格式:按照上機指導(dǎo)書171頁附錄D格式書寫 采用統(tǒng)一的實驗報告紙
- 溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案