循環結構程序設計_第1頁
循環結構程序設計_第2頁
循環結構程序設計_第3頁
循環結構程序設計_第4頁
循環結構程序設計_第5頁
已閱讀5頁,還剩30頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第5章循環結構程序設計16 九月 20222問題:要求在屏幕上按行打印110??刹捎庙樞蚪Y構寫10行代碼實現。代碼如下:printf(%dn,1 );printf(%dn,2 );printf(%dn,3 );printf(%dn,4 );printf(%dn,5 );printf(%dn,6 );printf(%dn,7 );printf(%dn,8 ); printf(%dn,9 );printf(%dn,10 ); int i=1; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf

2、(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);修改為16 九月 20223問題:要求在屏幕上按行打印110。 int i=1; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+;

3、 printf(%dn,i);能否將重復的語句合并?#includestdio.hint main()int i=1;while(i=10) printf(%dn,i); i+;return 0;16 九月 20224循環語句的三種結構:一、當型循環的一般形式: while(表達式)語句;二、直到型循環的一般形式: do 語句 while(表達式);三、for循環語句的一般形式: for(表達式1;表達式2;表達式3) 語句;13建筑本3-4616 九月 202255.1 while語句1.while語句的形式while (表達式) 循環體 表達式:是循環能進行的條件,可以是任何類型的,一般是

4、關系表達式或邏輯表達式或其組合。循環體:是重復執行的程序段,可以是單條語句,也可以是復合語句,若是復合語句,必須用一對花括號“ ”括起來。16 九月 202262.while語句的執行過程首先計算表達式的值,如果為真(非0),執行循環體,再判斷表達式。如果表達式的值為假(0),結束循環,執行while語句后面的語句。while語句的執行流程圖如下:while語句的特點是:先判斷表達式,為真才執行循環體語句,否則不執行。16 九月 202273.while語句的應用【例題5.1】用while語句求1+2+3+100的和。算法分析:程序分成3部分:初始化;求和;輸出步驟1: sum=0;步驟2.1

5、: sum=sum+1;步驟2.2: sum=sum+2;步驟2.3: sum=sum+3; 步驟2.99: sum=sum+99;步驟2.100:sum=sum+100;步驟3:輸出sum步驟1: sum=0,i=1;步驟2.1: sum=sum+i;i+;步驟2.2: sum=sum+i;i+;步驟2.3: sum=sum+i;i+; 步驟2.99: sum=sum+i;i+;步驟2.100:sum=sum+i;i+;步驟3:輸出sum優化16 九月 20228算法分析:程序分成3部分:初始化;求和;輸出步驟1: 定義i=1和sum=0;步驟2.1:若i100時,結束求累加和。循環條件是i

6、100時,結束求累加和。循環條件是i=100即表達式2,表達式1就是對變量i賦的初值1,循環體是求累加和sum=sum+i。實現算法的流程圖如圖所示。程序代碼:16 九月 2022164.for語句的變形for語句的變形for語句中的表達式可以省略,但分號不省略for語句中的表達式可以是逗號表達式for語句中的循環體可以是空語句for(sum=0, i=1; i=100; i+)sum=sum+i;for(sum=0, i=1; i=100; sum+=i, i+) ;省略表達式1省略表達式3省略表達式1和表達式3省略表達式1、表達式2和表達式3(如何控制循環)16 九月 2022175.4

7、for語句與while語句和do-while語句比較3種循環結構語句都能處理同樣的問題,可以相互替換。其中for語句主要用在循環次數已知情況下,while語句和do-while語句一般用在循環次數在循環過程中才能確定的情形。while語句和do-while語句處理問題較相近, while語句是先判斷循環條件,后執行循環體;do-while語句是先執行循環體,后判斷循環條件。for語句與while語句和do-while語句,從形式上看有區別,但本質是相同的。for語句與while語句的執行順序是相同的。16 九月 2022185.5 break語句與continue語句程序中語句通常按語句功能所

8、定義的方向執行?,F實中往往需要改變程序的正常流向,則C語言提供了輔助控制語句break語句與continue語句。5.5.1 break語句基本形式 break;功能:退出當前循環或當前switch結構,提前結束本層循環或本層switch結構。只能在循環結構內和switch結構內使用break語句,不得用于其他地方。作用是跳出當前循環或當前switch結構。16 九月 202219【例題5.5】在全系1000名學生中,征集慈善募捐,當募捐款達到10萬元時就停止募捐活動,統計此時捐款的人數,以及平均每人捐款的數目。算法分析:學生捐款是個累加過程但累加到10萬元停止。這一過程中要處理:學生捐款數、

9、累加捐款數、判斷累加捐款數達到10萬沒有這三件事即循環不變式。當累加捐款達到10萬元,停止募捐活動即提前結束循環。實現算法流程圖:程序代碼:16 九月 202220#include #define SUM 100000int main()float amount,aver,total; int i; for(i=1,total=0;i=SUM) break; aver=total / i ; printf(num=%dnaver=%10.2fn ,i,aver); return 0;please enter amount:12000please enter amount:24600please

10、 enter amount:3200please enter amount:5643please enter amount:21900please enter amount:12345please enter amount:23000num=7aver=14669.7116 九月 2022215.5.2 continue語句基本形式: continue;功能:continue語句作用是結束本次循環即跳過本次循環體中其余未執行的語句,提前進行下一次循環。continue語句只能用在for、while和do-while循環體中,常與if語句一起使用,用來加速循環?!纠}5.6】編寫程序:求1002

11、00之間的不能被3整除的數,并按每行10個數的格式輸出。算法分析:n%3,為0,不輸出用continue實現;不為0輸出用printf實現。實現算法流程圖:程序代碼:#include stdio.hvoid main( )int n; for(n=100;n=200;n+) if(n%3=0) printf(n);continue; printf(%5d,n); 2014.11.313建筑本3-4716 九月 2022225.5.3 break語句和continue語句的區別continue語句只結束本次循環,然后進行下一次循環;break:退出包含它的那一層循環。說明:break和conti

12、nue語句一般和if語句聯合使用,若在循環體內單獨使用將無任何意義。#include stdio.hvoid main( )int n; for(n=100;n=200;n+) if(n%3=0) printf(n);break; printf(%5d,n); 16 九月 2022235.6 循環的嵌套結構循環的嵌套是指在一個循環體內又包含一個或幾個的循環體結構的形式。一般來說有雙重循環嵌套和多重循環嵌套。while、do-while、for三種循環可相互嵌套,也可是自己的嵌套。內循環必須被包含在外循環體之內,不允許出現交叉現象。同學們分析下列循環嵌套結構的合法性。whiledoWhile f

13、orforfordowhile 合法 合法 非法(交叉)16 九月 2022245.6.1 雙重循環的嵌套雙重循環即只有兩層循環:內循環和外循環。雙重循環的執行過程是:首先從外層循環開始執行,外層循環每執行一次,暫停,轉去執行內層循環,內層循環要將所有規定的循環次數全部執行完畢,返回外層循環,外層循環才能開始下一次循環,依此類推16 九月 2022251.外層循環變量與內層循環變量相互獨立【例題5.7】 編寫程序:輸出以下45的矩陣。1 2 3 4 52 4 6 8 103 6 9 12 154 8 12 16 20算法分析:定義兩個變量i,j分別控制行,列。輸出1行后,回車再輸出下1行,在輸

14、出行的過程中又要輸出5列的元素值,每個元素值=元素所在行值*元素所在列值。因此外循環控制行,內循環控制列。實現算法流程圖:程序代碼:16 九月 202226#include int main()int i,j,n=0;for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (n); printf (%dt,i*j); printf(n);return 0;iji*jn1110221332443554652122463674885109610313261139124121351514615414281631217416185201916 九月

15、 202227【例題5.8】設計輸出如下九九乘法表的程序。算法分析:乘法表共9行,第n行就有n個式子,每個式子與所在行,列有關。#include stdio.hint main( )int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+) printf(%d*%d=%d, ,j,i,j*i);printf(n); return 0;iji*j111*1=121,21*2=2,2*2=431,2,31*3=3,2*3=6,3*3=941,2,3,41*4=4,2*4=8,3*4=12,4*4=1651,2,3,4,51*5=5,2*5=10,3*5=15,4*5=20,5*5

16、=2561,2,3,4,5,61*6=6,2*6=12,3*6=18,4*6=24,5*6=30,6*6=36,71,2,3,4,5,6,71*7=7,2*7=14,3*7=21,4*7=28,5*7=35,6*7=42,7*7=4981,2,3,4,5,6,7,81*8=8,2*8=16,3*8=24,4*8=32,5*8=40,6*8=48,7*8=56,8*8=6491,2,3,4,5,6,7,8,91*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=8116 九月 2022285.6.2 多重循環的嵌套多重循環是指兩層及

17、兩層以上的循環結構?!纠}5.9】編寫程序:用1、2、3、4四個數字,能組成多少個互不相同且無重復數字的三位數?并按每行10個輸出。算法分析:組成的三位數的百位、十位、個位分別是給定的四個數中之一??啥x表示百位、十位和個位的變量分別是i,j,k,它們的取值分別是1到4中其一,但它們互不相等。這種算法稱窮舉法或測試法。程序代碼:16 九月 202229有1、2、3、4四個數字,能組成多少個互不相同且無重復數字的三位數,并輸出它們的結果。算法分析:填在百位、十位、個位的數字由1、2、3、4組成,可設三個變量;i表示百位,j表示十位,k表示個位,它們分別取值從1-4,通過循環列出所有可能的組合。#

18、include stdio.hint main( )int i,j,k;for(i=1;i5;i+)for(j=1;j5;j+)for(k=1;k=1e-6)pi=pi+t; n=n+2;s=-s; t=s/n;pi=pi*4; printf(pi=%10.6fn,pi);運行結果: pi=3.14139716 九月 202232【例題5.12】編寫程序:通過鍵盤輸入任意一個整數,要求反序輸出該整數。算法分析:如果輸入一個12345,則要求反序輸出54321,可采用下列方法實現。第1步:12345%10=5 12345/10=1234第2步:1234%10 =4 1234/10=123第3步:123%10 =3 123/10=12第4步:12%10 =2 12/10=1第5步:1%10 =1 1/10=0通過5步就可以將一個5位數拆分開來,并且每一步所做操作相同即先除10取余,然后再除10取整,這就是循環不

溫馨提示

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

評論

0/150

提交評論