第 循環(huán)結構程序設計C語言程序設計第三電子PPT課件_第1頁
第 循環(huán)結構程序設計C語言程序設計第三電子PPT課件_第2頁
第 循環(huán)結構程序設計C語言程序設計第三電子PPT課件_第3頁
第 循環(huán)結構程序設計C語言程序設計第三電子PPT課件_第4頁
第 循環(huán)結構程序設計C語言程序設計第三電子PPT課件_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、5.1 循環(huán)的基本概念【問題】如何計算1+2+3+4+100 s = s + i; /* 投入投入i 枚硬幣到枚硬幣到s中中*/i = i + 1; /* 計算下次投幣數(shù)計算下次投幣數(shù) */第1頁/共38頁5.1.1 方法的探索s=0; /* 盒子開始為空*/i=1; /* 第1次投幣*/while(i=100) /* 100次投幣*/ s=s+i; /* 投入i 枚硬幣到s中*/ i=i+1; /* 計算下次投幣數(shù) */ 第2頁/共38頁5.1.2 循環(huán)結構語句 for 循環(huán) while 循環(huán) do-while 循環(huán)第3頁/共38頁5.2 while循環(huán) while循環(huán)通過while語句實現(xiàn)

2、。while循環(huán)又稱為“當型”循環(huán)。 一般格式為: while (表達式) 語句 其中,括號后面的語句可以是一條語句,也可以是復合語句。它們都稱為循環(huán)體。 while語句的執(zhí)行過程為: (1) 計算并判斷表達式的值。若值為0,則結束循環(huán),退出while語句;若值為非0,則執(zhí)行循環(huán)體 (2) 轉步驟(1)第4頁/共38頁5.2 while循環(huán) 流程圖第5頁/共38頁【例5-1】計算s=1+2+3+100。 #include void main() int i,s;i=1;s=0;while(i=100) /* 循環(huán)控制 */ s=s+i;i=i+1;printf(s=%dn,s);第6頁/共38

3、頁【注意】 循環(huán)體包括一條或多條語句,多條語句必須用一對花括號“”括起來。 合理的循環(huán)是有限次循環(huán)。如果循環(huán)不能退出,則稱為“死循環(huán)”,在程序設計中應該避免出現(xiàn)。 控制循環(huán)執(zhí)行的次數(shù)因素包括循環(huán)中的循環(huán)條件、控制循環(huán)的主要變量的初值和終值以及每次變化的幅度等。 例如,上例中i有效地控制了循環(huán)的運行,i從1循環(huán)到100,每次加1,循環(huán)運行了100次,i也可以稱為循環(huán)變量。 第7頁/共38頁【注意】 如果只有一個循環(huán)變量,而且循環(huán)變量每次有固定的增加和減少,則循環(huán)的次數(shù)可以用以下公式計算: 循環(huán)次數(shù) = (終值-初值)/ 步長 + 1 步長為循環(huán)變量每次增加或減少的值,例如,上例循環(huán)次數(shù)為:(10

4、01)/1 + 1,即100次。 步長可以為負數(shù)。 第8頁/共38頁【例5-2】計算1到100之間所有3的倍數(shù)的和。 #include void main() int i,s; i=3;s=0; while(i=99) s=s+i; i=i+3; printf(s=%dn,s); 第9頁/共38頁5.3 do-while循環(huán) do-while循環(huán),又稱為“直到型”循環(huán),用do-while語句來實現(xiàn),其一般格式為: do 語句 while(表達式); do-while語句的執(zhí)行過程為:先執(zhí)行循環(huán)體語句再判斷表達式的值。若值為0,則結束循環(huán),退出do-while語句;若值為非0,則繼續(xù)執(zhí)行循環(huán)體。

5、 第10頁/共38頁5.3 do-while循環(huán)流程圖第11頁/共38頁【例5-3】計算s=1+2+3+100。 #include void main() int i,s; i=1;s=0; do s=s+i; i=i+1; while(i=100); printf(s=%dn,s); 第12頁/共38頁注意 do-while循環(huán)和while循環(huán)可以完成相同的任務。例如上面的程序都可以計算出1到100的數(shù)的和。 do-while循環(huán)的循環(huán)條件的判斷在循環(huán)體的后面,所以和while循環(huán)有區(qū)別,例如下面的兩個程序:int i=1;s=0;int i=1,s=0;while(i1)do s=s+i;

6、 s=s+i; i=i+1; i=i+1; while(i1);printf(s=%dn,s);printf(s=%dn,s); 左邊的程序運行結果為:s=0 右邊的程序運行結果為:s=1。第13頁/共38頁5.4 for循環(huán) for循環(huán)是循環(huán)的一種標準形式,通過for語句實現(xiàn),其語法如下: for(;) 表達式,通常用于循環(huán)的初始化。包括循環(huán)變量的賦初值、其他變量的準備等; 表達式,循環(huán)的條件判斷式,如果為空則相當于真值; 表達式,通常設計為循環(huán)的調(diào)整部分,主要是循環(huán)變量的變化部分; 循環(huán)體,由一條或多條語句構成,多條語句需要用一對花括號括起來。第14頁/共38頁5.4 for循環(huán)流程圖第1

7、5頁/共38頁【例5-4】計算s=1+2+3+100。 #include void main() int i,s; for(i=1,s=0;i=100;i+) s = s + i; printf(s=%dn,s); 第16頁/共38頁注意 for循環(huán)可以用以下while循環(huán)代替: ; while () ; ; 表達式可以是多個表達式構成的逗號表達式,例如i=1,s=0;。 、構成循環(huán)的控制部分,3個表達式之間用分號分隔。 表達式可以放在for循環(huán)的前面,但后面的分號不能少,例如: ;for(; );第17頁/共38頁注意 表達式也可以省略,相當于始終為真值,從而構成無條件循環(huán),循環(huán)將不能終止,

8、需要采取其他措施。 表達式也可以省略,但作為循環(huán)變量的調(diào)整功能不能缺少,可以在循環(huán)體中完成,例如下面的for循環(huán)。 for (i=1,s=0;i=100;) s = s + i+; 如果表達式和都省略的話,相當于while循環(huán),例如下面的程序形式:i=1,s=0;for (;i=100;) /*相當于 while(i=100)*/ s = s + i+;第18頁/共38頁注意 、均省略,即: for (;) ; 相當于while (1) ;。循環(huán)的所有控制和計算功能都必須在循環(huán)體中完成,這樣的循環(huán)適合于隨機退出循環(huán)程序的情況。 表達式也可以省略,但必須至少保留一個分號,即: for (;) ;

9、 一個分號即是一條空語句。 如果、均省略,即如以下形式: for (;); 這將構成一個死循環(huán)。 第19頁/共38頁【例5-5】計算1+1.5+2.0+2.5+3.0+3.5+10。 #include void main() float i, s; /*i,s需要定義為float型 */ for(i=1,s=0;i=10;i=i+0.5) s = s + i; printf(s=%fn,s); 第20頁/共38頁5.5 循環(huán)嵌套(1)while () while () (2)for (;) for (;) (3)do do while (); while ();(4)while () for

10、(;) (5)for (;) while (;) (6)do for (;); while ();第21頁/共38頁【例5-6】計算s=1+(1+2)+(1+2+3)+(1+2+3+4+10)。 #include void main() int i,j,s; for(i=1,s=0;i=10;i+) for(j=1;j=i;j+) s=s+j; printf(s=%dn,s); 變量跟蹤表第22頁/共38頁5.6 break語句、continue語句和goto語句 5.6.1 break語句 switch結構中可以用break語句跳出結構去執(zhí)行switch語句的下一條語句。實際上,break語

11、句也可以用來從循環(huán)體中跳出,常常和if語句配合使用。例如: for(i=1;i100)break; 當變量i100時退出循環(huán)。 break語句不能用于循環(huán)語句和switch語句之外的任何其他語句中。 第23頁/共38頁5.6 break語句、continue語句和goto語句 5.6.2 continue語句 與break語句退出循環(huán)不同的是,continue語句只結束本次循環(huán),接著進行下一次循環(huán)的判斷,如果滿足循環(huán)條件,繼續(xù)循環(huán),否則退出循環(huán)。 5.6.3 goto語句 goto語句為無條件轉向語句,形式為: goto 語句標號 語句標號用標識符表示,命名規(guī)則同變量名。 第24頁/共38頁【

12、例5.7】閱讀下面程序,寫出運行結果。 #include void main() int i,s; for(i=1,s=0;i=10;i+) if(i%2=0) continue; if(i%10=7) break; s=s+i; printf(s=%dn,s); 第25頁/共38頁5.7 程序舉例 【例5-8】計算s=12348。 #include void main()int i;long s;for(i=1,s=1;i=8;i+)s = s * i;printf(s=%ldn,s); 第26頁/共38頁【例5-9】打印圖形。 #include void main()int i,j;for

13、 (i=1;i=5;i+)for (j=1;j=i;j+)printf(*); printf(n); /* 每輸出一行需要換行 */ 第27頁/共38頁循環(huán)變量的功能 控制循環(huán) 作為循環(huán)體中算法的引用變量for(i=0;i100;i+) s=s+i;for(i=1;i=100;i+) s=s+i;for(i=1,j=1;i=100;i+) s=s+j; j=j+1; for(i=0;i100;i+) s=s+i+1;0+1+2+0+1+2+99+991+2+3+1+2+3+100+1001+2+3+1+2+3+100+1001+2+3+1+2+3+100+100for(i=2,j=1;i=20

14、0;i=i+2) s=s+j; j=j+1; 控制控制+引用第28頁/共38頁【例5-9】打印圖形。 分析for(i=1;i=4;i+) /*控制輸出控制輸出4行行*/ for(j=1;j=i-1;j+) printf();/*輸出輸出i-1個空格個空格*/ for(j=1;j=2*i-1;j+) printf(*);/*輸出輸出2*i-1個星號個星號*/ printf(n); /*輸出一行后換行輸出一行后換行*/第29頁/共38頁【例5-10】計算100以內(nèi)的所有素數(shù)之和。 【分析】 從定義來判斷,除了1和本身之外,沒有其他因子,所以程序的任務是依次判斷1到100之間所有的數(shù)是否為素數(shù),如果

15、是,將其累加。最后輸出累加的和。 需要嵌套的循環(huán),外循環(huán)控制產(chǎn)生1到100的數(shù)的循環(huán),循環(huán)變量的值也正是內(nèi)循環(huán)需要判斷的對象;內(nèi)循環(huán)首先判斷當前的循環(huán)變量的值是否為素數(shù),是則累加。循環(huán)結束后輸出累加的和。第30頁/共38頁【例5-10】計算100以內(nèi)的所有素數(shù)之和。#include void main() int i,j,s=0;for(i=2;i=100;i+) /* 設置循環(huán)產(chǎn)生2100之間的數(shù) */ for(j=2;ji-1) /* i是素數(shù),因為2 i-1沒有i的因子 */s=s+i;printf(%dn,s); 以上程序中j=i-1也可以改成j=i/2或j=3) 很顯然,F(xiàn)ibona

16、cci數(shù)列依次為:1,1,2,3,5,8,13,21,34第33頁/共38頁【例5-11】計算Fibonacci數(shù)列前20項的和。#include void main() int f1,f2,f;int i;long s;f1=f2=1; s=f1+f2;for(i=1;i=18;i+)f=f1+f2; /*得到一個新數(shù)*/s=s+f; f1=f2; /*重置兩個數(shù)*/f2=f;printf(%ldn,s); 第34頁/共38頁l 循環(huán)結構是面向過程編程中三種結構中最重要的一種結構,學好它是學好這門課程的關鍵。本章介紹的內(nèi)容主要包括:l三種循環(huán)結構while、do-while和for循環(huán)(goto也可以構成循環(huán),通常不用)l break語句、continue語句和goto語句l while循環(huán)和do-while循環(huán)的條件判斷一個在前,一個在后,為導致循環(huán)體執(zhí)行的次數(shù)不同,需要密切注意。 第35頁/共38頁lfor循環(huán)為標準的功能很強的循環(huán),通常用于可控制的循環(huán),對于程序的維護和閱讀都是最佳選擇。lbreak語句和co

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論