第5章+循環(huán)控制結構程序設計課件_第1頁
第5章+循環(huán)控制結構程序設計課件_第2頁
第5章+循環(huán)控制結構程序設計課件_第3頁
第5章+循環(huán)控制結構程序設計課件_第4頁
第5章+循環(huán)控制結構程序設計課件_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章循環(huán)結構程序設計《C語言程序設計基礎教程》2023/10/2115.1while語句5.2

do…while語句5.3

for語句5.4

循環(huán)的嵌套5.5

幾種循環(huán)的比較5.6

break和continue語句5.7程序舉例2023/10/212循環(huán)結構是結構化程序設計的基本結構之一,它的特點是,在給定條件成立時,反復執(zhí)行某程序段,直到條件不成立為止。給定的條件稱為循環(huán)條件,反復執(zhí)行的程序段稱為循環(huán)體。C語言提供了多種實現(xiàn)循環(huán)的語句,可以組成各種不同形式的循環(huán)結構。

用while語句

用do-while語句

用for語句2023/10/213while語句可以用來實現(xiàn)“當型”循環(huán)結構。1)格式:while(表達式)語句2)執(zhí)行過程其特點是:先判斷表達式,后執(zhí)行語句。§5.1while語句2023/10/214【例5-1】用while語句求1~100的累計和。#include"stdio.h"main(){ inti=1,sum=0; while(i<=100) { sum=sum+i; i++; } printf("%d\n",sum);}程序運行結果如下:5050§5.1while語句2023/10/215使用while語句應注意以下幾點:(1)while循環(huán)結構的特點是“先判斷,后執(zhí)行”。如果表達式的值一開始為“假”,則循環(huán)體一次也不執(zhí)行。(2)while語句中的表達式一般是關系表達式或邏輯表達式,只要表達式的值為真(非0)即可繼續(xù)循環(huán)。(3)為使循環(huán)能夠正確開始運行,需要對循環(huán)控制變量初始化。(4)循環(huán)體中,如果包含一個以上的語句,則應用花括號括起來,構成復合語句,否則while語句的范圍只到while后面第1個分號處。(5)循環(huán)體內中應有使循環(huán)趨向于結束的語句。§5.1while語句2023/10/216【例5-2】從鍵盤輸入30個學生的成績,對其進行處理;如果成績及格,則輸出“Passed”,否則輸出“Failed”。#include"stdio.h"main(){ intn=1; floatscore; while(n<=30) §5.1while語句2023/10/217{ printf("enterascore:\n"); scanf("%f",&score); if(score>=60.0) printf("Passed\n"); elseprintf("Failed\n"); n++; }}

§5.1while語句2023/10/218do…while語句可以用來實現(xiàn)“直到型”循環(huán)結構。1)格式:do語句while(表達式);2)執(zhí)行過程這個循環(huán)與while循環(huán)的區(qū)別在于,它先執(zhí)行后判斷,因此,do-while循環(huán)至少要執(zhí)行一次循環(huán)體。而while循環(huán)是先判斷后執(zhí)行,如果條件不滿足,則循環(huán)體語句一次也不執(zhí)行?!?.2do…while語句2023/10/219【例5-3】用do-while語句求1~100的累計和。#include"stdio.h"main(){ inti=1,sum=0; do { sum=sum+i; i++; } while(i<=100);

printf("%d\n",sum);}程序運行結果如下:5050§5.2do…while語句2023/10/2110使用do-while語句應注意以下幾點:(1)do是C語言的關鍵字,必須與while聯(lián)合使用。(2)在if語句、while語句中,表達式后面都不能加分號,而在do-while語句的表達式后面必須加分號,它表示do-while語句的結束,否則將產生語法錯誤。(3)while后面一對圓括號中的表達式,可以是C語言中任意合法的表達式。由它控制循環(huán)是否執(zhí)行。(4)和while語句一樣,在使用do-while語句時,不要忘記初始化循環(huán)控制變量,否則執(zhí)行的結果將是不可預知的。(5)要在do-while語句的某處(表達式或循環(huán)體內)改變循環(huán)控制變量的值,否則極易構成死循環(huán)。(6)按照語法規(guī)則,在do和while之間的循環(huán)體只能是一條可執(zhí)行語句。若循環(huán)體內需要多個語句,應該用花括號括起來,組成復合語句。§5.2do…while語句2023/10/2111【例5-4】將輸入的一串字符顯示在屏幕上,遇到空格時停止。#include"stdio.h"main(){ charc; printf("\nPleaseinputastring:"); do { c=getchar(); putchar(c); } while(c!='');}程序運行結果如下:Pleaseinputastring:Homeworkintheschool↙Homework§5.2do…while語句2023/10/2112【例5-5】while語句和do-while語句的比較。main(){ints=0,n;scanf("%d",&n);

while(n<=10){s=s+n;

n++;}

printf("%d",s);

}

main(){ints=0,n;scanf("%d",&n);

do{s=s+n;

n++;}

while(n<=10);printf("%d",s);

}

輸入:1↙結果:55輸入:11↙結果:0輸入:1↙結果:55輸入:11↙結果:112023/10/2113

當輸入i的值小于或等于10時,兩者得到的結果相同。而當i>10時,兩者結果不同。這是因為此時對while循環(huán)來說,一次也不執(zhí)行循環(huán)體(表達式“i<=100”為假),而對do-while循環(huán)語句來說,則要執(zhí)行一次循環(huán)體??梢缘玫浇Y論:當while后面的表達式的第1次的值為“真”時,兩種循環(huán)得到的結果相同,否則,兩者結果不相同(指兩者具有相同的循環(huán)體的情況)?!?.2do…while語句2023/10/2114 for語句是循環(huán)控制結構中使用最廣泛的一種循環(huán)控制語句,特別適合用于已知循環(huán)次數(shù)的情況。1)格式:for(表達式1;表達式2;表達式3)語句2)執(zhí)行過程

§5.3for語句2023/10/2115【例5-6】用for語句求1~100的累計和。#include"stdio.h"main(){ ints=0,n=1; for(n=1;n<=100;n++) s=s+n; printf("s=%d\n",s);}程序運行結果如下:5050§5.3for語句2023/10/2116使用for語句應注意以下幾點:(1)for循環(huán)中的“表達式1(循環(huán)變量賦初值)”、“表達式2(循環(huán)條件)”和“表達式3(循環(huán)變量增量)”都是選擇項,即可以缺少,但“;”不能缺少。(2)省略了“表達式1(循環(huán)變量賦初值)”,表示不對循環(huán)控制變量賦初值。(3)省略了“表達式2(循環(huán)條件)”,則不做其他處理時便成為死循環(huán)。(4)省略了“表達式3(循環(huán)變量增量)”,則不對循環(huán)控制變量進行操作,這時可在循環(huán)體中加入修改循環(huán)控制變量的語句?!?.3for語句2023/10/2117使用for語句應注意以下幾點:(5)省略了“表達式1(循環(huán)變量賦初值)”和“表達式3(循環(huán)變量增量)”。(6)3個表達式都可以省略。(7)表達式1可以是設置循環(huán)變量的初值的賦值表達式,也可以是其他表達式。(8)表達式1和表達式3可以是簡單表達式,也可以是逗號表達式。(9)表達式2一般是關系表達式或邏輯表達式,但也可是數(shù)值表達式或字符表達式,只要其值非零,就執(zhí)行循環(huán)體。§5.3for語句2023/10/2118【例5-7】輸出100~1000之間同時能被4和6同時整除的數(shù)及其和。#include"stdio.h"main(){ floats=0; inti; for(i=100;i<=1000;i++) if(i%4==0&&i%6==0) { s=s+i; printf("%5d",i);} printf("s=%f\n",s);}§5.3for語句2023/10/2119【例5-8】在3~100之間所有3的倍數(shù)中,找出個位數(shù)為2的數(shù)。#include"stdio.h"main(){ inti=0; for(i=3;i<=100;i++) if(i%3==0&&i%10==2) printf("%4d",i); printf("\n");}§5.3for語句程序運行結果如下:1242722023/10/2120【例5-9】一個球從100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地時,共經過多少米?第10次反彈多高?#include"stdio.h"main(){ floatsn=100.0,hn=sn/2; intn; for(n=2;n<=10;n++)§5.3for語句2023/10/2121{ sn=sn+2*hn; hn=hn/2; } printf("thetotalofroadis%f\n",sn); printf("thetenthis%fmeter\n",hn);}§5.3for語句程序運行結果如下:thetotalofroadis299.609375thetenthis0.097656meter2023/10/2122§5.4循環(huán)嵌套 一個循環(huán)的循環(huán)體中有另一個循環(huán)稱為循環(huán)嵌套。這種嵌套過程可以有很多重。 一個循環(huán)外面僅包圍一層循環(huán)稱為二重循環(huán);一個循環(huán)外面包圍兩層循環(huán)稱為三重循環(huán); 一個循環(huán)外面包圍多層循環(huán)稱為多重循環(huán)。 循環(huán)嵌套的層數(shù)理論上無限制。2023/10/2123在使用循環(huán)嵌套時應注意以下幾點:(1)在嵌套的各層循環(huán)中,應使用復合語句(即用一對花括號將循環(huán)體語句括起來),以保證邏輯上的正確性;(2)內層和外層循環(huán)控制變量不應同名,以免造成混亂;(3)嵌套循環(huán)最好采用右縮進格式書寫,以保證層次的清晰性;(4)循環(huán)嵌套不能交叉,即在一個循環(huán)體內必須完整地包含另一個循環(huán)。 循環(huán)嵌套執(zhí)行時,先由外層循環(huán)進入內層循環(huán),并在內層循環(huán)終止之后接著執(zhí)行外層循環(huán),再由外層循環(huán)進入內層循環(huán)。當外層循環(huán)全部終止時,程序結束?!?.4循環(huán)嵌套2023/10/2124【例5-11】打印九九乘法口訣表。#include"stdio.h"main(){ inti,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) printf("%d*%d=%-3d",j,i,i*j); printf("\n"); }}程序運行結果如下:1*1=1 1*2=2 2*2=4 1*3=3 2*3=63*3=9 1*4=42*4=83*4=124*4=16 ……§5.4循環(huán)嵌套2023/10/2125§5.5幾種循環(huán)的比較幾種循環(huán)的比較如下:(1)3種循環(huán)都可以用來處理同一個問題,一般可以互相代替。(2)

while和do-while循環(huán),循環(huán)體中應包括使循環(huán)趨于結束的語句。for語句功能最強。(3)用while和do-while循環(huán)時,循環(huán)變量初始化的操作應在while和do-while語句之前完成,而for語句可以在表達式1中實現(xiàn)循環(huán)變量的初始化。(4)while循環(huán)、do-while循環(huán)和for循環(huán),可以用break語句跳出循環(huán),用continue語句結束本次循環(huán)(break語句和continue語句見5.6節(jié))。2023/10/2126§5.6break語句和continue語句§5.6.1break語句

當break語句用于while、do-while、for循環(huán)語句中時,可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語句。1)格式:

if(表達式)break;2)執(zhí)行過程:while(表達式1){…if(表達式2)break;…}2023/10/2127【例5-14】讀入5個正整數(shù)并且顯示它們。當程序讀入的數(shù)據(jù)為負數(shù)時,程序立即終止。#include"stdio.h"main(){ inti,n; for(i=1;i<=5;i++) { printf("pleaseentern:"); scanf("%d",&n); if(n<0)break; printf("n=%d\n",n); } printf("Programisover!\n");}§5.6break語句和continue語句程序運行結果如下:pleaseentern:10n=10Pleaseentern:-10Programisover!2023/10/2128使用break語句應注意以下幾點:(1)break語句只能用于循環(huán)結構或switch選擇結構中。如果在程序中有下列語句: if(…) break; 則此時的if語句一定位于循環(huán)體中或switch語句中,break語句跳出的也不是if語句,而是跳出包含此if語句的循環(huán)體或switch語句。(2)由于循環(huán)語句的循環(huán)體部分還可以使用循環(huán)語句,這樣,循環(huán)語句就可以嵌套使用。在循環(huán)語句嵌套使用的情況下,break語句只能跳出(或終止)包含它的最近一層的循環(huán)體,而不能同時跳出(或終止)多層循環(huán)。§5.6break語句和continue語句2023/10/2129§5.6.2continue語句

continue語句與break語句不同,當在循環(huán)體中遇到continue語句時,程序將跳過continue語句后面尚未執(zhí)行的語句,開始下一次循環(huán),即只結束本次循環(huán)的執(zhí)行,并不終止整個循環(huán)的執(zhí)行。1)格式:if(表達式)continue;

2)執(zhí)行過程:while(表達式1){…… if(表達式2)continue; ……}§5.6break語句和continue語句2023/10/2130【例5-16】求輸入的10個整數(shù)中正數(shù)的個數(shù)及其平均值。#include"stdio.h"main(){ inti,a,num=0; floatsum=0; for(i=0;i<10;i++) { scanf("%d",&a); if(a<=0)continue; num++; sum+=a;} printf("%dplusinteger'ssum:%.0f\n",num,sum); printf("averagevalue:%.2f\n",sum/num);}§5.6break語句和continue語句2023/10/2131使用continue語句應注意以下幾點:(1)continue語句只能用于while、do-while、for構成的循環(huán)結構中,常與if條件語句一起使用,用來加速循環(huán)。(2)在嵌套循環(huán)的情

溫馨提示

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

評論

0/150

提交評論