版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第4章循環(huán)結(jié)構(gòu)掌握while、do-while和for三種循環(huán)結(jié)構(gòu)掌握break與continue在循環(huán)結(jié)構(gòu)中的用法掌握循環(huán)嵌套的用法具備使用三種循環(huán)結(jié)構(gòu)來解決常見的重復(fù)操作問題的能力本章目標(biāo)例子1:向國旗敬個禮4.1理解循環(huán)結(jié)構(gòu)程序代碼:#include"stdio.h"intmain(){
printf("1.向國旗敬禮,禮畢\n");
printf("2.向國旗敬禮,禮畢\n");
printf("3.向國旗敬禮,禮畢\n");
printf("4.向國旗敬禮,禮畢\n");
printf("5.向國旗敬禮,禮畢\n");
return0;}
思考:這個程序?qū)懙暮貌缓??如果?0個同學(xué)參加升旗儀式,需要顯示每一個向國旗敬禮的同學(xué),如何編寫代碼?例子2:向國旗敬個禮4.1理解循環(huán)結(jié)構(gòu)程序代碼:#include"stdio.h"main(){ inti; i=1; while(i<=5){ printf("%d.向國旗敬禮,禮畢\n",i); i++; }}
思考:采用循環(huán)結(jié)構(gòu)設(shè)計程序,如何控制重復(fù)執(zhí)行的次數(shù)?4.1理解循環(huán)結(jié)構(gòu)什么是“循環(huán)”?簡單而言:循環(huán)就是不斷反復(fù)地執(zhí)行同一段程序。
(1)循環(huán)變量:第一次循環(huán)條件判斷之前初始化,設(shè)定循環(huán)操作的起點。(2)循環(huán)條件:用來判斷是否進入循環(huán)體執(zhí)行重復(fù)的操作,隨著循環(huán)的進行,循環(huán)條件通常逐漸趨于不成立。(3)循環(huán)體:需要重復(fù)執(zhí)行的語句塊,通常包含循環(huán)變量改變的語句,使得循環(huán)逐步趨于結(jié)束。4.1理解循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)的要素4.2while循環(huán)while語句語句的格式:while(表達(dá)式)
循環(huán)體語句說明:(1)表達(dá)式可以是任意類型,一般為關(guān)系表達(dá)式或邏輯表達(dá)式,其值為循環(huán)條件。如果表達(dá)式的值為0表示條件不滿足,否則表示條件滿足。(2)循環(huán)體可以是任何單個語句,也可以是一組語句,當(dāng)是一組語句時,需要用大括號將語句組擴起來。4.2while循環(huán)while執(zhí)行過程執(zhí)行過程:說明:(1)當(dāng)表達(dá)式的值為真(非0)時,執(zhí)行其中的內(nèi)嵌語句(循環(huán)體),(2)回過頭來再判斷表達(dá)式的值,如此重復(fù);(3)當(dāng)表達(dá)式為假(0)時結(jié)束循環(huán)。4.2while循環(huán)例4.4:用while循環(huán)求“1+2+3+…100”的和。程序代碼:#include<stdio.h>main(){ inti=1,sum=0; while(i<=100){ sum=sum+i; i++; } printf("%d",sum);}運行結(jié)果:5050分析:累加求和的問題
sum=1+2+3+…+100sum=0sum=sum+1sum=sum+2sum=sum+3……sum=sum+i和的新值和的當(dāng)前值求和項當(dāng)前值4.2while循環(huán)注意:(1)循環(huán)體有可能一次也不執(zhí)行。(2)循環(huán)前,必須給循環(huán)控制變量賦初值。(3)若循環(huán)體包含一條以上的語句,應(yīng)以復(fù)合語句形式出現(xiàn)。(4)循環(huán)體中,必須有改變循環(huán)控制變量值的語句(使循環(huán)趨向結(jié)束的語句)。
(5)無限循環(huán):while(1)循環(huán)體;(6)循環(huán)體為空如:
while((c=getchar())!='A');從鍵盤輸入字符直到輸入A為止
等價于:c=getchar();while(c!='A')c=getchar();4.3do-while循環(huán)do-while語句語句的格式:說明(與while相同):(1)表達(dá)式可以是任意類型,一般為關(guān)系表達(dá)式或邏輯表達(dá)式,其值為循環(huán)條件。如果表達(dá)式的值為0表示條件不滿足,否則表示條件滿足。(2)循環(huán)體可以是任何單個語句,也可以是一組語句,當(dāng)是一組語句時,需要用大括號將語句組擴起來。do
循環(huán)體語句while(表達(dá)式);4.3do-while循環(huán)do-while執(zhí)行過程執(zhí)行過程:說明:(1)
執(zhí)行循環(huán)體,當(dāng)表達(dá)式的值為真(非0)時;(2)再次執(zhí)行循環(huán)體,如此重復(fù);(3)當(dāng)表達(dá)式為假(0)時結(jié)束循環(huán)。4.3do-while循環(huán)例4.7:用do-while循環(huán)求“1+2+3+…100”的和。程序代碼:#include"stdio.h"main(){ inti=1,sum=0; do{ sum=sum+i; }while(i<=100); printf("%d",sum);}運行結(jié)果:5050#include<stdio.h>main(){ inti=1,sum=0; while(i<=100){ sum=sum+i; i++; } printf("%d",sum);}while循環(huán):先做后判先判后做4.3do-while循環(huán)注意:(1)do~while循環(huán)的特點:先執(zhí)行循環(huán)體,后判斷表達(dá)式,實現(xiàn)“直到”型循環(huán),所以循環(huán)體至少會執(zhí)行一次。(2)循環(huán)體中要有使循環(huán)趨于結(jié)束的語句;do~while循環(huán)最后的分號“;”不可少,否則將出現(xiàn)語法錯誤4.4for循環(huán)for語句語句的格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
循環(huán)體語句;for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)循環(huán)體語句;表達(dá)式運用4.4for循環(huán)for語句說明:(1)循環(huán)體語句可以是任意語句;(2)三個表達(dá)式可以是任意類型;(3)表達(dá)式1用于給某些變量賦初值,多數(shù)情況下,在此處給循環(huán)控制變量賦初值;(4)表達(dá)式2用來說明循環(huán)終止條件,多數(shù)情況下,是根據(jù)循環(huán)控制變量的值確定循環(huán)是否結(jié)束;(5)表達(dá)式3用來改變某些變量的值,多數(shù)情況下,使循環(huán)控制變量的值增加或減少,使循環(huán)控制變量的值向著使循環(huán)終止的方向改變。4.4for循環(huán)for執(zhí)行過程執(zhí)行過程:說明:(1)計算表達(dá)式1的值,然后轉(zhuǎn)(2);(2)計算表達(dá)式2的值,若其值為非0,轉(zhuǎn)(3);否則轉(zhuǎn)(5);(3)執(zhí)行循環(huán)體,轉(zhuǎn)(4);(4)計算表達(dá)式3,轉(zhuǎn)(2);(5)退出循環(huán),執(zhí)行循環(huán)體下面的語句。4.4for循環(huán)例4.10:用for循環(huán)求“1+2+3+…100”的和。程序代碼:#include<stdio.h>main(){ inti,sum=0; for(i=1;i<=100;i++)/*循環(huán)要素*/ sum=sum+i; printf("%d",sum);}運行結(jié)果:5050表達(dá)式1為變量賦初值表達(dá)式2說明循環(huán)終止條件表達(dá)式3改變變量的值4.4for循環(huán)注意:for循環(huán)結(jié)構(gòu)的變化(1)
表達(dá)式1省略時,應(yīng)在for前給循環(huán)變量賦初值。如:k=1;
for(;k<=3;k++)s=s+k;(2)
表達(dá)式2省略時,不判斷循環(huán)條件,將成為“死循環(huán)”,需要在
循環(huán)體中引入break語句以退出循環(huán);(3)表達(dá)式3省略時,循環(huán)體內(nèi)應(yīng)有使循環(huán)條件改變的語句。
如:for(k=1;k<=3;)
{s=s+k;
k++;}
4.4for循環(huán)注意:for循環(huán)結(jié)構(gòu)的變化(4)
同時省略表達(dá)式1和表達(dá)式3,只有表達(dá)式2,此時相當(dāng)于while
語句。如
k=1;while(k<=100){s=s+k;k++;}(5)表達(dá)式2一般是關(guān)系表達(dá)式或邏輯表達(dá)式,但也可以是數(shù)值表達(dá)
式或字符表達(dá)式,只要其值不等于0就執(zhí)行循環(huán)體。
如:for(k=1;k-4;k++)s=s+k;
僅當(dāng)k的值等于4時終止循環(huán)。k-4是數(shù)值表達(dá)式。k=1;for(
;k<=100;){s=s+k;k++;}4.5循環(huán)結(jié)構(gòu)間的比較和總結(jié)while(表達(dá)式)
循環(huán)體語句do
循環(huán)體語句while(表達(dá)式);for(表達(dá)式1;表達(dá)式2;表達(dá)式3;)
循環(huán)體語句循環(huán)控制條件也可在循環(huán)體內(nèi)改變循環(huán)控制變量值(1)關(guān)于循環(huán)的控制:
循環(huán)控制變量
初始化也可在for前4.5循環(huán)結(jié)構(gòu)間的比較和總結(jié)(2)一種循環(huán)可以解決的問題,使用另外兩種同樣可行,只
是方便程度不同。(3)while循環(huán)一般用于循環(huán)次數(shù)不定的情況,for循環(huán)一般用于循環(huán)次數(shù)確定的情況(也可以用于循環(huán)次數(shù)不定的情況),do-while循環(huán)一般用于至少需要執(zhí)行一次的情況。(4)for循環(huán)和while循環(huán)是先判斷條件是否為真,再執(zhí)行循
環(huán)體,因此可出現(xiàn)循環(huán)一次也不執(zhí)行的情況;do-while
循環(huán)是先執(zhí)行循環(huán)體,再判斷條件是否為真,因此循環(huán)
體至少執(zhí)行一次。(5)while循環(huán)、do-while循環(huán)、for循環(huán),可以用break語
句跳出循環(huán),用continue語句結(jié)束本次循環(huán)。4.6break語句和continue語句break語句語句的格式:
break;
功能:
是終止并退出當(dāng)前的循環(huán)語句,也就是跳出循環(huán)體語句,執(zhí)行循環(huán)體語句后面的語句,再也不會進入循環(huán)體,如圖所示。4.6break語句和continue語句例4.12:判斷輸入的正整數(shù)是否為素數(shù),如果是素數(shù),輸出Yes,否則輸出No。程序代碼:#include"stdio.h"main(){ intm,i; scanf("%d",&m); for(i=2;i<=m-1;i++) if(m%i==0)break; if(i>=m)printf("Yes"); elseprintf("No");}
運行結(jié)果:m=13Yes終止循環(huán)并跳出循環(huán)體4.6break語句和continue語句continue語句語句的格式:
continue;
功能:
結(jié)束本次循環(huán),跳過循環(huán)體中尚未執(zhí)行的部分,進行下一次是否執(zhí)行循環(huán)的判斷,即往上跳,還有可能再次進入循環(huán)體,如圖所示。4.6break語句和continue語句例4.13:輸出100-200中不能被7整除的數(shù)。程序代碼:#include"stdio.h"main(){intn,count=0;for(n=100;n<=200;n++) { if(n%7==0)continue;printf("%d",n);count++;if(count%10==0) printf("\n");}}運行結(jié)果:100101102103104106107108109110111113114115116117118120121122123124125127128129130131132134135136137138139141142143144145146148149150151152153155156157158159160162163164165166167169170171172173174176177178179180181183184185186187188190191192193194195197198199200跳出循環(huán)進行下一次循環(huán)4.7循環(huán)的應(yīng)用例4.14:從鍵盤輸入一個正整數(shù)N,編寫一個C語言程序計算N的階乘N!。示例輸入:5示例輸出:5!=120分析:首先需要定義一個初始變量來存儲階乘結(jié)果。然后將循環(huán)變量用N來初始化。循環(huán)結(jié)束后,輸出該變量的值。其次,這是將相鄰多個整數(shù)相乘,因而可以使用for循環(huán)或while循環(huán)來實現(xiàn)。while(i>=1){result=result*i;--i;}具體如下:for(i=N;i>=1;--i){
result=result*i;
}4.7循環(huán)的應(yīng)用程序代碼:#include<stdio.h>#include<stdlib.h>intmain(){inti,N;unsignedintresult=1;printf("請輸入計算其階乘的正整數(shù):\n");scanf("%d",&N);for(i=N;i>=1;--i){result=result*i;}printf("%d!=%d\n",N,result);return0;}運行結(jié)果:請輸入計算其階乘的正整數(shù):55!=120存儲階乘結(jié)果循環(huán)變量4.7循環(huán)的應(yīng)用例4.15:期末考試結(jié)束后,老師想知道最高分是多少,請用C語言編程實現(xiàn):從鍵盤輸入10名同學(xué)的成績,輸出其中的最高分。分析:首先可以使用變量max來記錄最大值。然后,在循環(huán)體里,每次輸入一個數(shù)時(使用scanf函數(shù)),和max比較,如果大于max,則將該數(shù)賦值給max。在此題中需要逐個比較不同學(xué)生的分?jǐn)?shù),要比較10次,需要使用循環(huán)結(jié)構(gòu)來輸入并進行比較才能確定出最大值。
具體如下:for(k=1;k<=10;k++){
scanf("%d",&x);
if(x>=max)
max=x;
}將大數(shù)賦值給maxif循環(huán)比較最大值for循環(huán)比較10次4.7循環(huán)的應(yīng)用程序代碼:#include<stdio.h>intmain(){intk,x,max;max=-999999;for(k=1;k<=10;k++){scanf("%d",&x);if(x>=max)max=x;}printf("Max=%d\n",max);return0;}運行結(jié)果:151235678279948758854Max=94輸入數(shù)據(jù)記錄最大值if循環(huán)比較最大值4.7循環(huán)的應(yīng)用例4.16:輸入若干名學(xué)生的某門課程成績,具體學(xué)生人數(shù)不確定,請編寫程序求總成績和平均成績。分析:利用循環(huán)將逐個學(xué)生的成績累加得到總成績,但由于學(xué)生人數(shù)不確定,又不能用人數(shù)來構(gòu)造循環(huán)條件。對于這種情況,一般需要人為約定何種條件停止循環(huán),本例采用輸入負(fù)數(shù)成績作為停止循環(huán)的條件。
具體如下:
scanf("%d",&s);
while(s>=0){
sum=sum+s;
n++;
scanf("%d",&s);
}先獲取成績儲存到s中,判斷其是否符合正數(shù)的條件進入while循環(huán)累加總成績獲取新成績4.7循環(huán)的應(yīng)用程序代碼:#include"stdio.h"main(){ ints,sum,n; floataverage; n=0; sum=0; scanf("%d",&s); while(s>=0){ sum=sum+s; n++; scanf("%d",&s); } average=sum/(float)n; printf("sum=%d,average=%f\n",sum,average);}運行結(jié)果:95786354-1sum=290,average=72.500000負(fù)數(shù)終止循環(huán)4.7循環(huán)的應(yīng)用例4.17:輸出1000以內(nèi)能被3整除且個位數(shù)為6的所有整數(shù)。分析:利用循環(huán)從0開始逐個遍歷一遍1000以內(nèi)的整數(shù)進行判斷。每次遍歷都判斷該整數(shù)是否能被3整除同時個位數(shù)為6,如果是,則輸出。
具體如下:
for(i=0;i<1000;i++){
if(i%3==0&&i%10==6){
printf("%d",i);
}
}for循環(huán)從0開始到1000for循環(huán)判斷其被3整除且個位數(shù)為6
,若是則輸出
輸出當(dāng)前數(shù)和一個空格
4.7循環(huán)的應(yīng)用程序代碼:#include<stdio.h>intmain(){inti;for(i=0;i<1000;i++){if(i%3==0&&i%10==6){printf("%d",i);}}return0;}運行結(jié)果:6366696126156186216246276306336366396
4264564865165465766066366666967267567868168468769069369669964.8循環(huán)結(jié)構(gòu)的嵌套(1)一個循環(huán)體內(nèi)包含著另一個完整的循環(huán)結(jié)構(gòu),就稱為嵌套循環(huán)。(2)內(nèi)嵌的循環(huán)中又可以嵌套循環(huán),從而構(gòu)成多重循環(huán)。(3)三種循環(huán)可以相互嵌套。下面幾種都是合法的嵌套形式:(1)while(){……
while(){……}…...}(4)while(){……
do{……}while();…….}(5)for(;;){……
while(){……}…...}(3)for(){……
for(;;){……}…….}(6)do{……
for(;;){……}…...}while();(2)do{……
do{……}while();…...}while();4.8循環(huán)結(jié)構(gòu)的嵌套作用:可以使復(fù)雜的問題結(jié)構(gòu)化,把一個功能的實現(xiàn)拆分成一個一個更小的功能,然后再實現(xiàn)。在實現(xiàn)過程中要注意結(jié)構(gòu)上的邏輯性和正確性,要保證每一個小功能能夠完全正確,最終實現(xiàn)一個完整的功能。執(zhí)行順序是:外層循環(huán)體每執(zhí)行一次,內(nèi)層循環(huán)都要整體執(zhí)行一遍。當(dāng)內(nèi)層循環(huán)結(jié)束后,外層循環(huán)再進行下一次迭代。這樣重復(fù)進行直到外層循環(huán)結(jié)束為止。4.8循環(huán)結(jié)構(gòu)的嵌套(1)嵌套的循環(huán)控制變量不應(yīng)同名,以免造成混亂。(2)內(nèi)循環(huán)變化快,外循環(huán)變化慢。例如:for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf("%1d*%1d=%2d",i,j,i*j);
printf("\n");}(3)正確確定循環(huán)體。(4)循環(huán)控制變量與求解的問題掛鉤。循環(huán)嵌套的說明:4.8循環(huán)結(jié)構(gòu)的嵌套例4.20:使用C語言的printf()打印長方形圖案,輸入圖案的長和寬。
例如:*
*
*
*
*
*
*
*
*
**
*
*
*
*
分析:(1)定義兩個整型變量,分別表
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鞋店活動策劃方案模板(3篇)
- 桁架梁施工方案(3篇)
- 速度滑冰活動方案策劃(3篇)
- 聚餐小活動方案策劃(3篇)
- 滕州裝修施工方案(3篇)
- 砂石運輸施工方案(3篇)
- 醫(yī)院建設(shè)實施方案
- 數(shù)字農(nóng)場研究方案
- 中學(xué)圖書館借閱制度
- 2025年中職高星級飯店運營與管理(酒店市場營銷策略)試題及答案
- 洗衣液宣傳課件
- “五個帶頭”方面對照發(fā)言材料二
- TTAF 241.1-2024 支持衛(wèi)星通信的移動智能終端技術(shù)要求和測試方法 第1部分:多模天通衛(wèi)星終端
- 奶茶品牌2026年新品研發(fā)上市流程
- 日常飲食營養(yǎng)搭配
- 上海醫(yī)療收費目錄
- 操作系統(tǒng)安全基礎(chǔ)的課件
- 人教版(2024)八年級上冊物理期末復(fù)習(xí)全冊知識點提綱
- 智慧廣場移多補少課件
- 2025年建筑工程勞務(wù)公司的年終總結(jié)大全5篇
- 在線網(wǎng)課學(xué)習(xí)課堂《人工智能(北理 )》單元測試考核答案
評論
0/150
提交評論