版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、循環(huán)結(jié)構(gòu),李曉玲,Page 2,本章結(jié)構(gòu),循環(huán)結(jié)構(gòu),,,,循環(huán)結(jié)構(gòu)概述,循環(huán)結(jié)構(gòu)的嵌套,for語句,,,while語句,,do…while語句,,,Page 3,本章目標(biāo),了解循環(huán)結(jié)構(gòu)、循環(huán)語句重點(diǎn)掌握for語句、 while語句和do…while語句的語法形式、執(zhí)行順序及用法掌握循環(huán)結(jié)構(gòu)的嵌套使用方法,Page 4,循環(huán)結(jié)構(gòu)概述,為什么用循環(huán)結(jié)構(gòu)?循環(huán)的基本步驟是什么?循環(huán)結(jié)構(gòu)的定義?,Page 5,為什么用循環(huán)結(jié)構(gòu)?,在程序
2、設(shè)計(jì)中經(jīng)常會遇到在某一條件成立時(shí),重復(fù)執(zhí)行某些操作。例如,求: sum=1+2+3+4+…+n,Page 6,循環(huán)的基本步驟,(1)給sum賦值0,i賦值1;,(2)令sum=sum+i,i=i+1;,(3)若i<=n,則重復(fù)執(zhí)行(2),(4)輸出sum的值,,,,Page 7,循環(huán)結(jié)構(gòu)的定義,循環(huán)結(jié)構(gòu):就是在給定條件成立的情況下,重復(fù)執(zhí)行一個(gè)程序段;當(dāng)給定條件不成立時(shí),退出循環(huán),再執(zhí)行循環(huán)下面的程序。循環(huán)語句:實(shí)現(xiàn)循環(huán)
3、結(jié)構(gòu)的語句稱為循環(huán)語句。在C中,循環(huán)語句有以下三種:for語句while語句do…while語句,Page 8,for語句(P29),語法形式: for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句說明:圓括號內(nèi)的三個(gè)表達(dá)式用分號“;”隔開;表達(dá)式1稱為循環(huán)初始化表達(dá)式,通常為賦值表達(dá)式;表達(dá)式2稱為循環(huán)條件表達(dá)式,通常為關(guān)系或邏輯表達(dá)式;表達(dá)式3稱為循環(huán)增量表達(dá)式,通常為賦值表達(dá)式,增量大小通常稱為步長;語句
4、稱為循環(huán)體,可以是單個(gè)語句,也可以是多個(gè)語句。,for(循環(huán)初始化;循環(huán)條件;循環(huán)增量),Page 9,for語句,表達(dá)式1可以省略for( ;表達(dá)式2;表達(dá)式3)表達(dá)式1和3都可以省略for(;表達(dá)式2;)如果表達(dá)式3省略,則在循環(huán)體內(nèi)應(yīng)該有改變循環(huán)條件的語句表達(dá)式1和3可以是簡單表達(dá)式,也可以是逗號表達(dá)式for(i=0,j=100;i<=j;i++,j--) k=i+j;,i=1;for(;i<=100;
5、i++)sum=sum+i;,Page 10,for語句,執(zhí)行順序(1)計(jì)算表達(dá)式1的值;(2)計(jì)算表達(dá)式2的值,若表達(dá)式2的值為true,則轉(zhuǎn)到(3);若為false,則結(jié)束循環(huán)(3)執(zhí)行循環(huán)體語句;(4)計(jì)算表達(dá)式3的值,返回(2)繼續(xù)執(zhí)行。流程圖,表達(dá)式 2,語句,,,false,true,求解表達(dá)式1,求解表達(dá)式3,,,Page 11,省略表達(dá)式1的寫法同時(shí)省略表達(dá)式1和3時(shí)的寫法,for語句,例 求自然數(shù)1~1
6、0之和。#includevoid main(){int i,sum=0;for(i=1;i<=10;i++)sum+=i;printf(“sum=%d\n”,sum);},?,分析:本題需要用累加算法,累加過程是一個(gè)循環(huán)過程,可以用for語句實(shí)現(xiàn)。,Page 12,for語句書上例子及練習(xí),P30 例2-7P32 例2-8 sum=1-1/3+1/5-1/7+…1/nP33 例2-9 求n!P34
7、練習(xí)2-13到2-17復(fù)習(xí)分支語句和for語句的綜合例題:P46 例3-4P50 例3-6P54 例3-9,Page 13,while語句(當(dāng)型循環(huán)),語法形式: while(表達(dá)式) 語句說明:表達(dá)式稱為循環(huán)控制條件表達(dá)式,一般為關(guān)系表達(dá)式或邏輯表達(dá)式,必須用一對圓括號“()”括起來。語句稱為循環(huán)體,可以是單個(gè)語句,也可以是多個(gè)語句。,循環(huán)控制條件,循環(huán)體,Page 14,while語句(
8、當(dāng)型循環(huán)),執(zhí)行順序判斷表達(dá)式(循環(huán)控制條件)的值若表達(dá)式的值為true,則執(zhí)行循環(huán)體(語句)若表達(dá)式的值為false,則執(zhí)行while語句后的語句流程圖注意:在循環(huán)體中,一般應(yīng)該包含改變循環(huán)條件表達(dá)式的語句。,表達(dá)式,語 句,,,false,true,Page 15,while語句(當(dāng)型循環(huán)),例 求自然數(shù)1~10之和。分析:本題需要用累加算法,累加過程是一個(gè)循環(huán)過程,可以用while語句實(shí)現(xiàn)。流程圖,Page 16
9、,while語句(當(dāng)型循環(huán)),例 求自然數(shù)1~10之和的源程序。#includevoid main(){int i=1,sum=0;while(i<=10){sum+=i;i++;}printf(“sum=%d\n”,sum);},運(yùn)行結(jié)果:sum=55,,Page 17,while語句書上例子及練習(xí),P58 例4-1P61 例4-2P62 練習(xí)4-1、4-2、4-3、4-4,Page
10、 18,do…while語句(直到型循環(huán)),語法形式: do 語句 while(表達(dá)式);說明:表達(dá)式稱為循環(huán)控制條件表達(dá)式,一般為關(guān)系表達(dá)式或邏輯表達(dá)式,必須用一對圓括號“()”括起來。語句稱為循環(huán)體,可以是單個(gè)語句,也可以是多個(gè)語句。do…while語句以分號結(jié)束。,循環(huán)控制條件,循環(huán)體,以分號結(jié)束,Page 19,do…while語句(直到型循環(huán)),執(zhí)行順序先執(zhí)行語句,后判斷表達(dá)式的值若表達(dá)式
11、的值為true,則繼續(xù)執(zhí)行循環(huán)體(語句)若表達(dá)式的值為false,則結(jié)束循環(huán),執(zhí)行do…while語句后的語句流程圖注意:在循環(huán)體中,一般應(yīng)該包含改變條件表達(dá)式的語句。,語 句,,,false,true,表達(dá)式,,Page 20,do…while語句(直到型循環(huán)),例 用do…while語句求自然數(shù)1~10之和。分析:本題需要用累加算法,累加過程是一個(gè)循環(huán)過程,可以用do…while語句實(shí)現(xiàn)。流程圖,Page 21,do…wh
12、ile語句(直到型循環(huán)),例 求自然數(shù)1~10之和的源程序。#includevoid main(){int i=1,sum=0;do{sum+=i;i++;} while(i<=10);printf(“sum=%d\n”,sum);},運(yùn)行結(jié)果:sum=55,,Page 22,do…while語句書上例子及練習(xí),P62 例4-3P64 練習(xí)4-5,Page 23,do…while和whi
13、le語句的區(qū)別,相同點(diǎn):都是實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語句區(qū)別:while語句先判斷表達(dá)式的值,為true時(shí),執(zhí)行循環(huán)體;(先判斷,后執(zhí)行)do…while語句先執(zhí)行循環(huán)體,再判斷表達(dá)式的值。(先執(zhí)行,后判斷) 思考題:在什么情況下,while和do…while語句的條件表達(dá)式和循環(huán)體相同,而循環(huán)次數(shù)卻不同?,?,Page 24,循環(huán)結(jié)構(gòu)的嵌套,在程序設(shè)計(jì)中,一個(gè)循環(huán)語句的循環(huán)體又包含一個(gè)完整的循環(huán)結(jié)構(gòu)時(shí),構(gòu)成多重循環(huán),又
14、稱為循環(huán)語句的嵌套。for() { do { }while(); },for() { do {} }while();,,,Page 25,循環(huán)結(jié)構(gòu)的嵌套,例 寫出右面圖形的源程序。#includevoid main(){int i,j;for(i=1;i<=3;i++){ for(j
15、=1;j<=5;j++) printf(“*”);printf(“\n”);}},***************,Page 26,循環(huán)嵌套書上例子及練習(xí),P68 例4-6P70 練習(xí)4-8,Page 27,,本章總結(jié),語法形式,,語法形式,,,,,for語句,,,,while(表達(dá)式)語句,do 語句while(表達(dá)式);,循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu)概述,while語句,do…while語句,先判
16、斷后執(zhí)行,先執(zhí)行后判斷,就是在給定條件成立的情況下,重復(fù)執(zhí)行一個(gè)程序段;當(dāng)給定條件不成立時(shí),退出循環(huán),再執(zhí)行循環(huán)下面的程序。,語法形式,for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句,最靈活,,循環(huán)結(jié)構(gòu)的嵌套,在程序設(shè)計(jì)中,一個(gè)循環(huán)語句的循環(huán)體又包含一個(gè)完整的循環(huán)結(jié)構(gòu)時(shí),構(gòu)成多重循環(huán),Page 28,循環(huán)語句練習(xí),P64 例4-4 判斷素?cái)?shù)P67 練習(xí)4-6、4-74.5節(jié) 例4-7到4-11 練習(xí)4-9到4-14,Page 29,
17、經(jīng)典例題,求斐波那契數(shù)列(P74 例4-10)中國古典算術(shù)問題(P75 例4-11)相關(guān)問題:種數(shù)問題、百雞問題求1~599中能被3整除,且至少有一位數(shù)字為5的所有整數(shù)。輸出9*9口訣表求1!+2!+3!+4!+…+10!打印圖形找出1000以內(nèi)的所有完數(shù)。一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為“完數(shù)”。例如6=1+2+3 求水仙花數(shù):是指一個(gè)n(>=3)位數(shù)字的數(shù),它等于每個(gè)數(shù)字的n次冪之和。輸入兩個(gè)正
18、整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。,Page 30,3.求1~599中能被3整除,且至少有一位數(shù)字為5的所有整數(shù)。,判斷a、b、c中是否有5:將1~599中三位整數(shù)i分解成個(gè)位、十位、百位,分別存放在變量a、b、c中。然后判斷這三個(gè)變量是否含5。將三位整數(shù)i (設(shè)i=513)分解成個(gè)位、十位、百位的方法是: c=i/100; //百位 b=i%100/10;
19、//十位 a=i%100%10; //個(gè)位,Page 31,,#includevoid main(){int i,a,b,c;for(i=1;i<=599;i++){ c=i/100; //百位 b=i%100/10; //十位 a=i%100%10; //個(gè)位if(i%3==0 && (a==5||b==5||c==5))print
20、f("%d能被3整除且包含5\n",i);}},Page 32,4.輸出9*9口訣表,#includevoid main(){int i,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf("%d*%d=%2d ",i,j,i*j);printf("\n");}},Page 33,
21、打印下列圖形,#includevoid main(){int i,j;for(i=1;i<=5;i++){for(j=1;j<=i;j++)printf("*");printf("\n");}},Page 34,打印下列圖形,#includevoid main(){int i,j;for(i=1;i=i;j--)printf
22、(" ");for(j=1;j<=i;j++)printf("*");printf("\n");}},Page 35,打印下列圖形,#includevoid main(){int i,j;for(i=1;i=i;j--)printf("*");printf("\n");}},
23、Page 36,打印下列圖形,#includevoid main(){ int i,j,n; printf("請輸入棱形的對角線半長度n:"); scanf("%d",&n); for (i=1;i0;i--) //畫下半個(gè)棱形 { for(j=1;j<=40-i;j++) printf(" "); for(j=1;j
24、<=2*i-1;j++) printf("*"); printf("\n"); }},Page 37,打印下列圖形,#include#includevoid main(){int i,j;for(i=-3;i<=3;i++){for(j=0;j<=10+abs(i);j++)printf(" ");for(j
25、=1;j<=2*(4-abs(i))-1;j++)printf("*");printf("\n");}},Page 38,7.找出1000以內(nèi)的所有完數(shù),#includevoid main(){int i,j,s;for(i=1;i<=1000;i++){s=0;for(j=1;j<i;j++)if(i%j==0)s=s+j
26、;if(s==i)printf("%d\n",s);}},Page 39,求100之內(nèi)的素?cái)?shù),只能被1和本身整除的數(shù)判斷一個(gè)數(shù)a是否為素?cái)?shù),只需將它除以2~(sqrt(a)取整)即可,如果都不能整除,則a就是素?cái)?shù)。,Page 40,#include#includevoid main(){int a,k,i,n;n=0;for(a=2;ak)//若i>k,則a為素?cái)?shù){
27、printf("%10d",a); //輸出素?cái)?shù)n=n+1; //對素?cái)?shù)進(jìn)行統(tǒng)計(jì)個(gè)數(shù)}}printf("\n");},求100之內(nèi)的素?cái)?shù),Page 41,輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。,輾轉(zhuǎn)相除法是利用以下性質(zhì)來確定兩個(gè)正整數(shù) a 和 b 的最大公因子的: 1. a ÷ b,令r為所得余數(shù)(0≤r<
28、b) 若 r = 0,算法結(jié)束;b 即為答案。 2. 互換:置 a←b,b←r,并返回第一步。,Page 42,求兩個(gè)自然數(shù)m與n的最大公約數(shù)采用輾轉(zhuǎn)相除法設(shè)最小公倍數(shù) (Lease common multiple)為lcm=m*n;最大公約數(shù)(Greatest common divisor)為gcd??刹捎萌缦卵h(huán)實(shí)現(xiàn):(循
29、環(huán)前l(fā)cm=m*n)r=m%n;m←n;n←r;直到r=0為止,此時(shí)最大公約數(shù)為gcd=n,最小公倍數(shù)為lcm=lcm/gcd例如:求m=4與n=6的最大公約數(shù):r=4%6=4; m←6;n←4;r=6%4=2; m←4;n←2;r=4%2=0; 則最大公約數(shù)gcd=n=2最小公倍數(shù)lcm=4*6/2=12,Page 43,#include#includevoid main(){ int m,n,lcm,gcd,r
30、; printf("please input m,n:"); scanf("%d%d",&m,&n); lcm=m*n; //因?yàn)檠h(huán)后,m和n都會改變,所以現(xiàn)在先把它賦值 while (m%n!=0) //當(dāng)余數(shù)不等于0時(shí),進(jìn)行循環(huán) { r=m%n; //r為m除以n得到的余數(shù) m=n; //把除數(shù)n的值賦給被除數(shù)
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第四章 血液循環(huán)
- 第四章 sql語言
- 第四章 血液循環(huán)
- 四章節(jié)血液循環(huán)
- c語言課件第8.3章
- c語言程序設(shè)計(jì)中for循環(huán)語句的教學(xué)設(shè)計(jì)探析
- 生理學(xué)第四章循環(huán)
- c語言選擇語句題庫
- c語言if語句練習(xí)題
- 幾何光學(xué)課件第四章
- 第四章 c程序設(shè)計(jì)
- 在c語言中嵌入sql語句
- 銷售語言教案(第一至四章)
- 現(xiàn)代檢測課件整理前四章
- c語言中for語句的教學(xué)設(shè)計(jì)
- 生理第四章血液循環(huán)試題及答案
- c語言循環(huán)習(xí)題答案
- c語言程序設(shè)計(jì)第6章課件-
- 第四章語言的書寫符號系統(tǒng)——文字
- 形式語言第四章參考答案
評論
0/150
提交評論