C語言程序設(shè)計(jì)課件:第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第1頁
C語言程序設(shè)計(jì)課件:第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第2頁
C語言程序設(shè)計(jì)課件:第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第3頁
C語言程序設(shè)計(jì)課件:第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第4頁
C語言程序設(shè)計(jì)課件:第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)思考求1100的累加和。分析換一種思路:sum=1+2+100;首先設(shè)置一個累計(jì)器sum,其初值為0,利用sum += n來計(jì)算(n依次取1、2、100),只要解決以下3個問題即可: (1)將n的初值置為1; (2)每執(zhí)行1次“sum += n;”后,n增1; (3)當(dāng)n增到101時,停止計(jì)算。此時,sum的值就是1100的累計(jì)和。sum=sum+n;一、goto語句二、while語句三、do-while語句四、for語句五、break、continue語句六、幾種循環(huán)的比較主要內(nèi)容格式goto 語句標(biāo)號說明(1) 與if 語句一起構(gòu)成循環(huán)結(jié)構(gòu)。(2) 不符合結(jié)構(gòu)化程序設(shè)

2、計(jì)原則,一般不用。#include int main() int n=1, sum=0; loop: sum += n; n+; if (n=100) goto loop; printf(“sum=%dn”, sum); return 0; 舉例使用goto語句與分語句配合構(gòu)成循環(huán)結(jié)構(gòu),實(shí)現(xiàn)求1100的累加和。作用:使系統(tǒng)轉(zhuǎn)向標(biāo)號所在的語句行執(zhí)行。標(biāo)號的定名規(guī)則與變量名相同。一、goto語句格式while (表達(dá)式) 循環(huán)體語句 說明1. 循環(huán)體如果包含一個以上的語句,必須使用復(fù)合語句形式。2. 在循環(huán)體中,必須有使循環(huán)條件趨向于不滿足(假)的語句。3. 先判斷表達(dá)式,后執(zhí)行語句。 ?含義當(dāng)表

3、達(dá)式為真(非0值)時,執(zhí)行while語句中的內(nèi)嵌語句。執(zhí)行過程表達(dá)式循環(huán)體語句假 真 循環(huán)體語句當(dāng)表達(dá)式值為真N-S圖表示二、while語句sum= 55舉例求110的累加和。 i=1 sum=0當(dāng)i=10sum=sum+ii+輸出suminclude int main() int i,sum; i=1; sum=0; while (i=10) sum=sum+i; i+; printf(“sum=%5dn”,sum); return 0;思考1. 如果去掉循環(huán)體中的大括號,執(zhí)行過程將會怎樣變化?2. 在循環(huán)體中,使循環(huán)條件趨向于不滿足(假)的語句是哪條??1 求15的累加和.2 求110的奇

4、數(shù)和.3 求110的偶數(shù)和.二、while語句格式do 循環(huán)體語句while (表達(dá)式);說明1. 循環(huán)體如果包含一個以上的語句,必須使用復(fù)合語句形式。2. 在循環(huán)體中,必須有使循環(huán)條件趨向于不滿足(假)的語句。3. 先執(zhí)行循環(huán)體語句,后判斷表達(dá)式的值。 ?含義執(zhí)行do-while語句中的內(nèi)嵌語句,直到表達(dá)式為假(0)才跳出循環(huán)。執(zhí)行過程表達(dá)式循環(huán)體語句假真循環(huán)體語句當(dāng)表達(dá)式值為真N-S圖表示至少執(zhí)行一次三、do-while語句sum= 55舉例求110的累加和。 include int main() int i,sum; i=1; sum=0; do sum=sum+i; i+; while

5、 (i=10); printf(“sum=%5dn”,sum); return 0;i=1 sum=0當(dāng)i10)輸出sumsum=sum+ii+思考1. 如果去掉循環(huán)體中的大括號,執(zhí)行過程將會怎樣變化?2. 在循環(huán)體中,使循環(huán)條件趨向于不滿足(假)的語句是哪條?三、do-while語句舉例while和do-while循環(huán)的比較。 include int main() int i,sum; scanf(“%d”,&i); while(i=10) sum=sum+i; i+; printf(“sum=%dn”,sum); return 0;include int main() int i,sum;

6、 scanf(“%d”,&i); do sum=sum+i; i+; while(i=10) printf(“sum=%dn”,sum); return 0;輸入:1 輸入:11 sum=55輸出:sum=55sum=0輸出:sum=11此程序的功能?什么情況下兩者結(jié)果相同?三、do-while語句格式for (表達(dá)式1;表達(dá)式2;表達(dá)式3) 語句 for (循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) 語句 執(zhí)行過程(1)先求解表達(dá)式1;(2)求解表達(dá)式2,若其值為真,則 執(zhí)行循環(huán)體語句,然后執(zhí)行第(3)步;若為假,則結(jié)束循環(huán),轉(zhuǎn)到第(5)步;(3)求解表達(dá)式3;(4)轉(zhuǎn)向步驟(2);(5)循環(huán)

7、結(jié)束,執(zhí)行for語句下面的一個語句。表達(dá)式2循環(huán)體語句假 真求解表達(dá)式1求解表達(dá)式3四、for語句sum= 55舉例求110的累加和。 sum=0for i=1 to10sum=sum+i輸出suminclude int main() int i,sum; sum=0; for (i=1;i=10;i+) sum=sum+i; printf(“sum=%5dn”,sum); return 0;?1 求15的累加和.2 求110的奇數(shù)和.3 求110的偶數(shù)和.四、for語句for (表達(dá)式1;表達(dá)式2;表達(dá)式3) 語句 說明三個表達(dá)式都可以省略。表達(dá)式2循環(huán)體語句假 真求解表達(dá)式3表達(dá)式1省略循

8、環(huán)體語句求解表達(dá)式1求解表達(dá)式3表達(dá)式2省略表達(dá)式2循環(huán)體語句假 真求解表達(dá)式1表達(dá)式3省略四、for語句說明1i=1;for(; i=10;i+) sum=sum+i; 2for (i=1; ;i+) sum=sum+i; ?3for (i=1;i=10 ;) sum=sum+i; i+; for(i=1; i=10;i+) sum=sum+i; 表達(dá)式1可以省略,但其后的分號不可以省略。沒有循環(huán)結(jié)束條件,構(gòu)成了死循環(huán)for(i=1; i=10;i+) sum=sum+i; 四、for語句說明45for( ; ; ) sum=sum+i; 6表達(dá)式1和表達(dá)式3可以是與循環(huán)變量無關(guān)的表達(dá)式。f

9、or( ;i=10 ; ) sum=sum+i; i+; 7表達(dá)式2一般是關(guān)系表達(dá)式,也可以是數(shù)值或字符表達(dá)式。while(i=10) sum=sum+i; i+ ; while (1) sum=sum+i; 表達(dá)式1和表達(dá)式3可以同時省略,此時等同于while語句。for(sum=0,i=1;i=100,i+) sum=sum+i; 例建議:for語句中只放與循環(huán)控制有關(guān)的語句。四、for語句格式while (表達(dá)式1) if (表達(dá)式2) break; 舉例 . sum=0; for (i=1;i5) break; sum=sum+i; printf(“sum=%5dn”,sum); .w

10、hile (表達(dá)式1) if (表達(dá)式2) conitue; 結(jié)束整個循環(huán)結(jié)束本次循環(huán) . sum=0; for (i=1;i=10;i+) if (i=5) continue; sum=sum+i; printf(“sum=%5dn”,sum); .五、breakcontinue語句說明1. 三種循環(huán)語句在處理循環(huán)問題時,一般可以相互替代。2. 對于循環(huán)次數(shù)固定的問題,用for語句實(shí)現(xiàn)比較簡單。3. 對于循環(huán)次數(shù)不確定的問題,可用while語句或do-while語句實(shí)現(xiàn)。4. while語句:先判斷,后執(zhí)行。 do-while語句:先執(zhí)行,后判斷。六、幾種循環(huán)語句的比較概念一個循環(huán)體內(nèi)又包含

11、另一個完整的循環(huán)結(jié)構(gòu),稱為循環(huán)嵌套。 1 2 3 4 2 4 6 8 3 6 9 12 4 8 12 16舉例打印乘法口訣表。 #include int main() int i,j; for (i=1;i=4;i+) for (j=1;j=4;j+) printf(“%4d”,i*j); printf(“n”); return 0;i=1, j=1 1*1 j=2 1*2 j=3 1*3 j=4 1*4i=2, j=1 2*1 j=2 i=3i=4for i=1 to 4輸出i*jfor j=1 to 4換行七、循環(huán)嵌套 1 2 4 3 6 9 4 8 12 16#include int m

12、ain() int i,j; for (i=1;i=4;i+) for (j=1;j=i;j+) printf(“%4d”,i*j); printf(“n”); return 0;(一)循環(huán)嵌套思考1#include int main() int i,j; for (i=1;i=4;i+) for (j=1;j=5-i;j+) printf(“%4d”,i*j); printf(“n”); return 0;(一)循環(huán)嵌套思考2 1 2 3 4 2 4 6 3 6 4#include int main() int i,j; for (i=1;i=4;i+) for (j=1;j=4-i;j+)

13、 printf(“ ” ); for (j=5-i;j=4;j+) printf(“%4d”,i*j); printf(“n”); return 0;(一)循環(huán)嵌套思考3 4 6 8 6 9 12 4 8 12 16#include int main() int i,j; for (i=1;i=4;i+) for (j=1;j=i-1;j+) printf(“ ” ); for (j=i;j=4;j+) printf(“%4d”,i*j); printf(“n”); return 0;(一)循環(huán)嵌套思考4 1 2 3 4 4 6 8 9 12 16例1利用公式:/4=1-1/3+1/5-1/7

14、+求 的近似值,直到某一項(xiàng)的絕對值小于10-6為止。#include #include int main() int s; float n,t,pi; t=1;pi=0;n=1.0;s=1; while(fabs(t)1e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(pi=%10.6fn,pi); return 0; 思考:使用那一種循環(huán)控制語句?(二)程序舉例pi=1-1/3+輸出4* pis=1(-1)n=1,3,5,7t=s/n例2求Fibonacci數(shù)列的前40個數(shù)。#include int main() long int f1,f2

15、; int i; f1=1;f2=1; for(i=1;i=3) 1 1 2 3 5 8 13 21 34 55 89 144 (二)程序舉例例3判斷m是否為素?cái)?shù)。素?cái)?shù)(質(zhì)數(shù)): 只能被1和它本身整除的數(shù)。判別方法:57:若256之間的每一個數(shù)都除不開56,則56為素?cái)?shù),否則56不是素?cái)?shù)。m, k=m-1,i=2k :若每一個 i 的值都除不開m,則m為素?cái)?shù),否則m不是素?cái)?shù)。flag=1;k=sqrt(m);for (i=2;i=k;i+) if (m%i=0) flag=0;if (flag=1) printf(“yes!”);else printf(“no!”);k=sqrt(m);for (i=2;i=k+1) printf(“yes!”);else printf(“no!”);k=m-1;k=m/2;(m+1)/2;k=sqrt(m);sqrt(m+1)(二)程序舉例例3輸出 101200之間的全部素?cái)?shù)。for m=101 to 200判斷m是否為素?cái)?shù)若m是素?cái)?shù),則輸出并統(tǒng)計(jì)個數(shù)n.每輸出10個素?cái)?shù),換行#include #include int main() int m,k,i,n=0; for(m=101;m=200;m=m+2) k=

溫馨提示

  • 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

提交評論