《C語言程序設計教程》課件第5章 循環結構程序設計_第1頁
《C語言程序設計教程》課件第5章 循環結構程序設計_第2頁
《C語言程序設計教程》課件第5章 循環結構程序設計_第3頁
《C語言程序設計教程》課件第5章 循環結構程序設計_第4頁
《C語言程序設計教程》課件第5章 循環結構程序設計_第5頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第五章循環結構程序設計2第五章

循環結構程序設計教學目標:掌握for語句的用法掌握while語句和do-while語句的用法學會使用循環結構程序設計教學重點與難點:學會使用循環結構設計程序35.1for語句

for語句是最常用的實現循環結構的語句,使用比較靈活,不僅可以用于循環次數已經確定的情況,而且可以用于循環次數不確定而只給出循環結束條件的情況。5.1.1for語句的格式1.for語句的一般格式為:

for(<表達式1>;<表達式2>;<表達式3>){語句塊;

}45.1for語句2.格式說明:(1)for是關鍵字,小括號不得缺省,大括號中只有一條語句時,可以省略大括號。(2)小括號中的3個表達式的所表示的含義如下:表達式1:初值表達式,用于在循環開始前,為循環變量設置初始值。一般為賦值表達式。表達式2:循環控制邏輯表達式,它控制循環執行的條件,決定循環次數。一般為關系表達式或邏輯表達式。表達式3:一般為賦值表達式,改變循環變量的值,遞增或遞減。(3)大括號括起來的語句組稱為循環體。55.1for語句3.執行過程:(1)先計算表達式1;(2)再計算表達式2,若其值為真(非0),則執行第三步;若為假,則結束循環,執行for循環后的語句;(3)執行循環體中的語句;(4)計算表達式3;(5)轉回第二步繼續執行依此循環,直至表達式2的值為假(0),退出循環。執行流程如圖5.1所示。6圖5.1for循環的執行流程圖

5.1for語句7【例5.1】編寫程序計算s=1+2+3+…+100。5.1for語句程序如下:#include<stdio.h>voidmain(){ ints=0,i; for(i=1;i<=100;i++) { s=s+i;/*循環體語句*/ } printf("s=%d\n",s);}程序運行結果:s=50508

【例5.2】從鍵盤輸入某小組10個學生的C語言成績,計算并輸出平均分。5.1for語句#include<stdio.h>voidmain(){floatscore,sum=0;floataverage;inti;printf("請輸入10學生的C語言成績:\n");for(i=1;i<=10;i++){ scanf("%f",&score); sum=sum+score;}average=sum/10;printf("10個學生的C語言平均分是:%4.1f",average);}程序運行結果:請輸入10個人的C語言成績:80907020609030809575↙全班10個學生的C語言平均分是:69.09for語句中的三個表達式根據情況可以省略,說明如下:5.1.2for語句的進一步演變1.省略表達式1:

for語句的一般形式中的“表達式1”可以省略。但要注意省略表達式1時,其后的分號不能省略。此時,應在for語句之前給循環變量賦初值。例如:i=1;for(;i<=100;i++)sum=sum+i;

105.1.2for語句的進一步演變2.省略表達式2:表達式2的功能是終止循環,如果省略表達式2,即表示表達式2的值始終為真,循環將無終止地進行下去。例如:for(i=1;;i++)printf("%d",i);該循環無終止條件,將無限循環輸出1、2、3、4、5……。如果要實現終止循環,則在循環體里設置有條件的結束循環for(i=1;;i++){s=s+i;if(i>100)break;}break的功能是終止循環,如果i>100即i=101時即結束循環。113.省略表達式3:

表達式3的功能是改變循環變量的值,遞增或遞減。如果省略表達式3,也將產生一個無窮循環。因此,如果要保證循環能正常結束,可以將表達式3放在循環體中。例如:for(i=1;i<=100;){sum=sum+i;i++;}5.1.2for語句的進一步演變125.1.2for語句的進一步演變4.三個表達式都可省略如:for(;;)即不設初值,不判斷條件(表達式2為真值),循環變量不增值。無終止地執行循環體。在實際編程中,并不是說表達式1、表達式2和表達式3不存在,而是它們要出現在程序中其它地方:如:

i=1;/*表達式1*/for(;;){if(i>100)break;/*表達式2*/s=s+i;i++;/*表達式3*/}135.1.2for語句的進一步演變5.for語句中要注意的幾個問題:(1)在for語句中,表達式1和表達式3也可以使用逗號表達式。在逗號表達式內按從左至右求解,整個表達式的值為其中最右邊的表達式的值。例如:for(i=1;i<=100;i++,sum=sum+i;)相當于:for(i=1;i<=100;i++)sum=sum+i;(2)在for語句中,表達式一般為關系表達式(如i<=10)或邏輯表達式(如x>0‖y<-4),但也可以是其他表達式(如字符表達式、數值表達式)。(3)for語句的循環語句可以是空語句。空語句用來實現延時,即在程序執行中等待一定的時間。for(i=1;i<=1000;i++);注意:上面語句最后的逗號不能省略,它代表一個空語句。14【例5.4】求Fibonacci數列的前20項。該級數的前幾項是:1、1、2、3、5、8、13、21、34、…5.1.2for語句的進一步演變#include<stdio.h>voidmain(){ intf1=1,f2=1,f3=0,i=3; printf("%d,%d",f1,f2); for(;i<=20;i++) { f3=f1+f2; printf("%d,",f3); if(i%5==0)printf("\n"); f1=f2; f2=f3; }}程序運行結果:1,,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,155.2

while語句1、while語句的格式:while(表達式){循環體語句;}2、格式說明:(1)while是c語言的關鍵字;(2)while后的圓括號不能缺少,表達式通常是關系表達式或邏輯表達式;表示循環的條件;也可以是任意合法的表達式;(3)循環體可以是多個語句,必須用大括號括起來。163、執行過程:先計算表達式的值,當表達式的值為非0時,執行循環體;再計算表達式的值,重復上述步驟,直到表達式的值為0時,結束循環,執行循環語句的后續語句。執行流程如圖5.2所示。5.2

while語句圖5.2while循環的執行流程圖175.2

while語句

注意:(1)在while語句前應為循環控制變量賦初值;(2)循環體內應有改變循環控制變量的語句;(3)while循環的特點是先判斷后執行,故循環有可能一次都不被執行;(4)while語句常常應用于未知循環次數的情況。185.2

while語句【例5.5】編寫程序,輸入若干學生的成績,輸出最高分和最低分。

程序如下:

#include<stdio.h>

voidmain(){floatscore,max,min;/*max存放最高分,min存放最低分*/printf("請輸入成績,輸入負數結束");/*提示信息*/scanf("%f",&score);/*輸入第一個學生的分數*/max=score;min=score;while(score>=0){ if(max<score)max=score; if(min>score)min=score; scanf("%f",&score);}printf("最高分為%5.1f,最低分為%5.1f",max,min);}191.do-while語句的格式采用while語句實現的是一種直到型循環結構,其語法的一般格式:do{循環體語句;}while(表達式);2.格式說明:(1)do、while是c語言的關鍵字;(2)while后的圓括號不能缺少,表達式是任意合法的表達式;(3)循環體可以是多個語句,必須用大括號括起來。5.3 do-while語句20

3.執行過程:(1)先執行do后面的循環體語句,(2)再計算while后圓括號中表達式的值,當表達式的值為非0時,轉去執行循環體;直到為0時,結束循環,執行循環語句的后續語句;執行流程如圖5.3所示。5.3 do-while語句圖5.3do-while循環的執行流程圖215.3 do-while語句注意:(1)循環體可以用復合語句;(2)循環控制變量在執行do前必須賦初值;循環體內應有改變循環控制變量的語句;(3)do-while循環的特點是先執行后判斷,故循環至少被執行一次;(4)“;”不得丟失。22

【例5.7】統計從鍵盤輸入的一行非空字符的個數(以回車作為輸入結束標記)程序如下:#include<stdio.h>voidmain(){ charch; intnum=0; printf("請輸入一行非空字符,以回車作為輸入結束:"); do { ch=getchar();/*從鍵盤輸入一個字符*/ num++;/*統計字符個數變量自加1*/ }while(ch!='\n');/*當ch不是回車時,繼續執行循環體*/ printf("num=%d\n",num-1);}5.3 do-while語句235.4 循環的嵌套循環結構的循環體可以是任何合法的C語句,如果循環體中包含另一個循環語句,則構成了循環的嵌套,稱為多層循環。三種循環語句for、while、do...while可以互相嵌套自由組合。循環嵌套常用的形式如下:245.4.1多層循環(1)for(;;){…for(;;){…}}(2)for(;;){…while(){…}}(3)for(;;){…do{…}while();}(4)do{…for(;;){…}}while();(5)while(){…for(;;){…}}(6)do{…while(){…}}25但要注意的是,各循環必須完整,相互之間絕不允許交叉。如下嵌套形式是錯誤的:do{for(;;){…}while();/*格式交叉*/}雙層循環結構程序的執行過程是外循環執行一次,內層循環根據情況要執行一個循環過程。5.4.1多層循環26【例5.9】輸出顯示5行7列的星形矩陣。程序如下:#include<stdio.h>voidmain(){ inti,j; intcol,row; printf("請輸入行數和列數:"); scanf("%d%d",&row,&col); for(i=1;i<=row;i++)/*控制行*/ { for(j=1;j<=col;j++)/*控制列*/ printf("*"); printf("\n");/*換行*/ }}程序運行結果:請輸入行數和列數:57***********************************5.4.2循環嵌套的應用27【例5.10】輸出:乘法九九表。程序如下:#include<stdio.h>voidmain(){ inti,j; for(i=1;i<10;i++)/*外層循環*/ { for(j=1;j<=i;j++)/*內層循環*/ printf("%d*%d=%d",i,j,i*j);/*輸出數據*/ printf("\n");/*每一行輸出完畢換行*/ } printf("\n");}5.4.2循環嵌套的應用28

在設計循環結構的程序時,有時,我們需要在循環體中提前跳出循環,或者在滿足某種條件下,不執行循環中剩下的語句而立即從頭開始新的一輪循環,這時就要用到break和continue語句。break語句break語句的一般格式為:break;

在循環語句中,break語句的作用是在循環體中測試到應立即結束循環時,使控制立即跳出循環結構,轉而執行循環語句后的語句。

5.4.3break與continue語句29【例5-11】判斷輸入的整數是否為素數。素數是只能被1和本身整除的數。程序如下:#include<stdio.h>voidmain(){ intn,i; printf("請輸入一個整數:"); scanf("%d",&n); for(i=2;i<n;i++) if(n%i==0)break; if(i>=n) printf("%d是素數\n",n); else printf("%d不是素數\n",n);}程序運行結果:請輸入一個整數:11↙11是素數請輸入一個整數:15↙15不是素數5.4.3break與continue語句30

2.continue語句continue語句只能用于循環結構中,一旦執行了continue語句,程序就跳過循環體中位于該語句后的所有語句,提前結束本次循環周期并開始新一輪循環。continue語句其一般格式是:

continue;注意:在多層循環中本語句只結束本層本次的循環,并不跳出循環。5.4.3break與continue語句31【例5.12】輸出100以內能被7整除的數。程序如下:#include<stdio.h>voidmain(){ intn; for(n=7;n<=100;n++) { if(n%7!=0)continue; printf("%d",n); }}5.4.3break與continue語句程序運行結果:

714212835424956

溫馨提示

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

評論

0/150

提交評論