




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
循環(huán)結(jié)構(gòu)
在條件成立時(shí),反復(fù)執(zhí)行某個(gè)程序段,這種程序結(jié)構(gòu)稱(chēng)為循環(huán)結(jié)構(gòu),反復(fù)被執(zhí)行的程序段稱(chēng)為循環(huán)體,這個(gè)條件稱(chēng)為循環(huán)條件。循環(huán)語(yǔ)句循環(huán)結(jié)構(gòu)一般用循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)。C語(yǔ)言提供3種循環(huán)語(yǔ)句:while語(yǔ)句、do~while語(yǔ)句和for語(yǔ)句執(zhí)行過(guò)程(1)計(jì)算while后面圓括號(hào)中表達(dá)式的值,若其結(jié)果為非0,
轉(zhuǎn)(2);否則轉(zhuǎn)(3);(2)執(zhí)行循環(huán)體,轉(zhuǎn)(1);(3)退出循環(huán),執(zhí)行循環(huán)體下面的語(yǔ)句。特點(diǎn):先判斷條件,后執(zhí)行循環(huán)體一、while語(yǔ)句一般形式
while(表達(dá)式)循環(huán)體其中,表達(dá)式是循環(huán)條件。非0表達(dá)式循環(huán)體0while語(yǔ)句流程圖voidmain(){inta,i,n=0,sum=0;printf("請(qǐng)輸入10個(gè)小于100的整數(shù):");
printf("n=%dsum=%d\n",n,sum);}while(
)
{
if(a%2==0)
{n++;sum+=a;}
i++;
}【例】從鍵盤(pán)上輸入10個(gè)小于100的整數(shù),輸出偶數(shù)的個(gè)數(shù)及偶數(shù)和。i=1;/*循環(huán)條件*//*修正循環(huán)變量*/程序1?/*循環(huán)變量賦初值*/#include"stdio.h"①循環(huán)體有可能一次也不執(zhí)行i<=10i<1②如果循環(huán)體不是空語(yǔ)句,不能在while后面的圓括號(hào)后加分號(hào)(;);×③循環(huán)體中要有使循環(huán)趨于結(jié)束的語(yǔ)句④當(dāng)循環(huán)體是復(fù)合語(yǔ)句,必須用{}括起來(lái)scanf("%d",&a);一般形式
do循環(huán)體while(表達(dá)式);其中,表達(dá)式是循環(huán)條件。二、do-while語(yǔ)句執(zhí)行過(guò)程
(1)執(zhí)行循環(huán)體,轉(zhuǎn)(2);
(2)計(jì)算while后面圓括號(hào)中表達(dá)式的值,若其結(jié)果為非0,轉(zhuǎn)(1),否則轉(zhuǎn)(3);
(3)退出循環(huán),執(zhí)行循環(huán)體下面的語(yǔ)句。特點(diǎn):先執(zhí)行循環(huán)體,后判斷條件do~while語(yǔ)句流程圖0表達(dá)式循環(huán)體非0#include"stdio.h"voidmain(){intn=0,sum;
sum=0;
do{
}while()printf("n=%dsum=%d\n",n,sum);}n++;sum+=n;sum<500/*循環(huán)變量賦初值*//*循環(huán)條件*//*修正循環(huán)變量*/程序2?【例】計(jì)算整數(shù)n的值,使1+2+3+…+n剛好大于或等于500。運(yùn)行結(jié)果n=32sum=528
①do~while語(yǔ)句最后的分號(hào)(;)不可少②循環(huán)體中要有使循環(huán)趨于結(jié)束的語(yǔ)句③循環(huán)體至少執(zhí)行一次sum<0;×一般形式
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
循環(huán)體三、for語(yǔ)句執(zhí)行過(guò)程
(1)計(jì)算表達(dá)式1,轉(zhuǎn)2。
(2)計(jì)算表達(dá)式2,若其值為非0,轉(zhuǎn)(3);否則,轉(zhuǎn)5。
(3)執(zhí)行循環(huán)體,轉(zhuǎn)4。
(4)計(jì)算表達(dá)式3,轉(zhuǎn)2。
(5)退出循環(huán),執(zhí)行循環(huán)體下面的語(yǔ)句。非00表達(dá)式1表達(dá)式2循環(huán)體表達(dá)式3for語(yǔ)句流程圖特點(diǎn):先判斷條件,后執(zhí)行循環(huán)體。非0#include"stdio.h"voidmain(){inti,sum;
printf("sum=%d\n",sum);}sum=0;
i=1;while(i<=100){sum+=i;
i++;}sum=0;
i=1;do{sum+=i;
i++;}while(i<=100);sum=0;
for(i=1;i<=100;i++)
sum+=i;while循環(huán)do~while循環(huán)【例】計(jì)算1~100之間的整數(shù)和。i=1:循環(huán)變量賦初值i<=100:循環(huán)條件
i++:修正循環(huán)變量程序3?for(sum=0,i=1;i<=100;sum+=i,i++);sum=0;for(i=1;i<=100;i++)sum+=i;(1)在for語(yǔ)句中,表達(dá)式1和表達(dá)式3經(jīng)常使用逗號(hào)表達(dá)式,用于簡(jiǎn)化程序,提高程序運(yùn)行效率,這也是逗號(hào)表達(dá)式的主要用途之一。循環(huán)體為空語(yǔ)句表達(dá)式1表達(dá)式3說(shuō)明①表達(dá)式1省略
for(;表達(dá)式2;表達(dá)式3)循環(huán)體for(i=1;i<=100;i++)sum+=i;i=1;for(;i<=100;i++)sum+=i;此時(shí)應(yīng)在for語(yǔ)句之前給有關(guān)變量賦初值
(2)在for語(yǔ)句中,在分號(hào)(;)必須保留的前提條件下,三個(gè)表達(dá)式的任何一個(gè)都可以省略。
②表達(dá)式3省略
for(表達(dá)式1;表達(dá)式2;)循環(huán)體此時(shí)應(yīng)在循環(huán)體中修正循環(huán)變量for(i=1;i<=100;){sum+=i;}for(i=1;i<=100;i++)sum+=i;i++;③表達(dá)式2省略
for(表達(dá)式1;;表達(dá)式3)循環(huán)體此時(shí)認(rèn)為表達(dá)式2的值始終為真(值為1),循環(huán)體中必須有使循環(huán)結(jié)束的語(yǔ)句(break語(yǔ)句或goto語(yǔ)句),否則是死循環(huán)。for(i=1;i<=100;i++)sum+=i;for(i=1;;i++){if(i<=100)sum+=i;else;}break1④表達(dá)式1和表達(dá)式3同時(shí)省略
for(;表達(dá)式2;)循環(huán)體
此時(shí)應(yīng)在for語(yǔ)句之前給變量賦初值,在循環(huán)體中修正循環(huán)變量,等同于while語(yǔ)句。i=1;
{sum+=i;}for(i=1;i<=100;i++)sum+=i;while(i<=100)for(;i<=100;)i++;⑤表達(dá)式1和表達(dá)式2同時(shí)省略
for(;;表達(dá)式3)循環(huán)體
for(;;i++){
sum+=i;}此時(shí)應(yīng)在for語(yǔ)句之前給變量賦初值,在循環(huán)體中用break語(yǔ)句或goto語(yǔ)句退出循環(huán)。for(i=1;i<=100;i++)sum+=i;i=1;if(i>100)break;⑥表達(dá)式2和表達(dá)式3同時(shí)省略
for(表達(dá)式1;;)循環(huán)體
for(i=1;;){
sum+=i;
}此時(shí)應(yīng)在循環(huán)體中修正循環(huán)變量,在循環(huán)體中用break語(yǔ)句或goto語(yǔ)句退出循環(huán)。for(i=1;i<=100;i++)sum+=i;
i++;if(i>100)break;⑦三個(gè)表達(dá)式同時(shí)省略
for(;;)循環(huán)體
{sum+=i;
}此時(shí)應(yīng)在for語(yǔ)句之前給變量賦初值,在循環(huán)體中修正循環(huán)變量,在循環(huán)體中用break語(yǔ)句或goto語(yǔ)句退出循環(huán),相當(dāng)于:while(1)循環(huán)體for(i=1;i<=100;i++)sum+=i;i=1;if(i>100)break;i++;for(;;)while(1)#include"stdio.h"Voidmain(){inti,j;
}for(i=1;i<=9;i++){
}printf("%d*%d=%-4d",j,i,j*i);for(j=1;j<=i;j++)一種循環(huán)語(yǔ)句的循環(huán)體中又有循環(huán)語(yǔ)句,稱(chēng)為循環(huán)語(yǔ)句的嵌套。三種循環(huán)語(yǔ)句可以互相嵌套,并且可以嵌套多層?!纠枯敵鼍啪懦朔ū怼rintf("\n");/*j是被乘數(shù),i是乘數(shù)*/四、循環(huán)語(yǔ)句的嵌套/*換行*/程序4?1.break語(yǔ)句一般形式
break;功能(1)用于switch~case語(yǔ)句時(shí),退出所在的switch~case語(yǔ)句,程序轉(zhuǎn)至switch~case語(yǔ)句下面的語(yǔ)句。五、break語(yǔ)句和continue語(yǔ)句#include"stdio.h"voidmain(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;
case2:a++;b++;}printf("%d,%d\n",a,b);}break;(2)用于循環(huán)語(yǔ)句時(shí),退出所在的循環(huán)體,程序轉(zhuǎn)至循環(huán)體下面的語(yǔ)句。
#include"stdio.h"voidmain(){inti,sum;sum=0;for(i=1;;i++){if(i>100)sum+=i;}
printf("sum=%d\n",sum);}break;#include"stdio.h"voidmain(){intm,i,k;
}【例】判斷輸入的正整數(shù)是否為素?cái)?shù),如果是素?cái)?shù),輸出Yes,否則輸出No。scanf("m=%d",&m);k=m-1;for(i=2;i<=k;i++)if(m%i==0)break;if(i>=m)printf("Yes");elseprintf("No");程序5?/*或k=m/2,或k=sqrt(m)*//*m保存讀入的正整數(shù)*/一般形式
continue;2.continue語(yǔ)句功能結(jié)束本次循環(huán),跳過(guò)循環(huán)體中尚未執(zhí)行的部分,進(jìn)行下一次是否執(zhí)行循環(huán)體的判斷。(1)在while語(yǔ)句和do~while語(yǔ)句中,continue把程序控制轉(zhuǎn)到while后面的表達(dá)式處。(2)在for語(yǔ)句中,continue把程序控制轉(zhuǎn)到表達(dá)式3處。
while(表達(dá)式){…
continue;…}do{…
continue;…}while(表達(dá)式);for(表達(dá)式1;表達(dá)式2;表達(dá)式3){…
continue;…}#include"stdio.h"voidmain(){inti,n2=0,n4=0,n8=0;
for(i=1;i<=100;i++){
n2++;
n4++;
n8++;
}printf("n2=%dn4=%dn8=%d\n",n2,n4,n8);}if(i%2)continue;/*轉(zhuǎn)至i++處*//*轉(zhuǎn)至i++處*//*轉(zhuǎn)至i++處*/程序6?【例】計(jì)算1~100之間分別能夠被2、4、8整除的整數(shù)個(gè)數(shù)。if(i%4)continue;if(i%8)continue;①break語(yǔ)句只能用于循環(huán)體和switch~case語(yǔ)句中;continue語(yǔ)句只能用于循環(huán)體中。說(shuō)明②用于循環(huán)體時(shí),break語(yǔ)句終止整個(gè)循環(huán);continue語(yǔ)句只是結(jié)束本次循環(huán)。while(表達(dá)式){…
break;…}…while(表達(dá)式){…
continue;…}…③在循環(huán)嵌套的情況下,break語(yǔ)句僅僅退出包含它的最內(nèi)層的循環(huán)語(yǔ)句的循環(huán)體。④在switch~case語(yǔ)句嵌套的情況下,break語(yǔ)句
僅僅退出包含它的最內(nèi)層的switch~case語(yǔ)句。while(表達(dá)式){…
do{…break;…}while(表達(dá)式);…break;…}…switch(表達(dá)式){…
switch(表達(dá)式){…break;…}…break;…}…一般形式
goto語(yǔ)句標(biāo)號(hào);其中,語(yǔ)句標(biāo)號(hào)是一個(gè)標(biāo)識(shí)符,在goto語(yǔ)句所在的函數(shù)中必須存在,并且其后必須跟一個(gè)冒號(hào)(:),冒號(hào)的后面可以為空,也可以是任何語(yǔ)句。六、goto語(yǔ)句(無(wú)條件轉(zhuǎn)移語(yǔ)句)用途一是與if語(yǔ)句一起實(shí)現(xiàn)循環(huán);二是從循環(huán)嵌套的內(nèi)層循環(huán)跳到外層循環(huán)外。功能無(wú)條件地將程序控制轉(zhuǎn)至語(yǔ)句標(biāo)號(hào)處。#include"stdio.h"voidmain(){inta,sum=0;
loop1:
/*語(yǔ)句標(biāo)號(hào)*/scanf("%d",&a);sum+=a>0?a:-a;if(a!=0)gotoloop1;
printf("sum=%d",sum);}程序7?【例】輸入一組數(shù),以0結(jié)束,求該組數(shù)據(jù)的絕對(duì)值之和。①使用goto語(yǔ)句只能實(shí)現(xiàn)在同一個(gè)函數(shù)內(nèi)跳轉(zhuǎn),可以向前跳轉(zhuǎn),也可以向后跳轉(zhuǎn),但不能實(shí)現(xiàn)從一個(gè)函數(shù)跳轉(zhuǎn)到其他函數(shù)。說(shuō)明fun1(){…
L1:…
gotoL1;…}fun1(){…
gotoL1;…
L1:…}fun1(){…
gotoL1;…}fun2(){…
L1:…}×③goto語(yǔ)句使程序流程無(wú)規(guī)律,可讀性差,不符合結(jié)構(gòu)化原則,一般不宜采用,只有在不得已時(shí)才使用。②只能從循環(huán)嵌套的內(nèi)循環(huán)跳轉(zhuǎn)到外循環(huán),不能從外循環(huán)跳轉(zhuǎn)到內(nèi)循環(huán)。while(表達(dá)式){…
do{…
gotoL1;…
}while(表達(dá)式);…
L1:…}while(表達(dá)式){…
do{…
L1:…
}while(表達(dá)式);…
gotoL1;…}×2.若有定義:intx,y;,則循環(huán)語(yǔ)句for(x=0,y=0;(y!=123)||(x<4);x++);的循環(huán)次數(shù)為()。
①
不確定次
②
無(wú)限次
③
4次
④
3次1.C語(yǔ)言中,while和do-while循環(huán)的主要區(qū)別是()。
①while的循環(huán)條件比do-while的循環(huán)條件嚴(yán)格
②do-while的循環(huán)體可以是復(fù)合語(yǔ)句
③do-while的循環(huán)體至少無(wú)條件執(zhí)行一次
④do-while允許從外部轉(zhuǎn)到循環(huán)體內(nèi)練習(xí)題一、單項(xiàng)選擇題③②3.下列程序運(yùn)行后的輸出結(jié)果是()。#include<stdio.h>
voidmain(){inti,n=0;for(i=2;i<5;i++){do{if(i%3)continue;n++;}while(!i);n++;}printf("n=%d\n",n);}①n=5②n=2③n=3④n=44.下列程序運(yùn)行后的輸出結(jié)果是()。
#include<stdio.h>voidmain(){intm=14,n=63;while(m!=n)
{while(m>n)m=m-n;while(m<n)n=n-m;}printf("%d\n",m);}①7②63③14④0④①2.以下程序的功能是計(jì)算s=1+12+123+1234+12345。#include<stdio.h>
voidmain(){intt=0,
,i;
for(i=1;i<=5;i++)
{t=i+
;s=s+t;}printf("s=%d\n",s);
}1.下面程序的功能是輸出100以內(nèi)能被3整除且個(gè)位數(shù)為6的所有正整數(shù)。#include<stdio.h>voidmain(){inti,j;for(i=0;
;i++)
{j=i*10+6;if(
)continue;printf("%d",j);}}二、填空題i<10j%3s=0t*101.下列程序的運(yùn)行結(jié)果是()
#include<stdio.h>voidmain(){intn=2,k=0;
while(n<5)k=n++;printf("%d,%d\n",k,n);}三、閱讀程序,寫(xiě)出運(yùn)行結(jié)果2.下列程序的運(yùn)行結(jié)果是()
#include<stdio.h>voidmain(){inti,j,s=0;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年三片式球閥項(xiàng)目發(fā)展計(jì)劃
- 2025年度汽車(chē)銷(xiāo)售市場(chǎng)調(diào)研與分析合同
- 2025版商業(yè)綜合體電梯清潔維護(hù)協(xié)議
- 2022年江蘇高考英語(yǔ)真題及答案-2
- 2025年度健康食堂牛羊肉綠色采購(gòu)配送協(xié)議4篇
- 2025年度足療行業(yè)市場(chǎng)調(diào)研分析合同
- 2025年全自動(dòng)潷水器合作協(xié)議書(shū)
- 幼兒園節(jié)奏感與韻律教育方案計(jì)劃
- 班級(jí)活動(dòng)與團(tuán)隊(duì)合作訓(xùn)練計(jì)劃
- 跨學(xué)科合作項(xiàng)目的設(shè)計(jì)與實(shí)踐計(jì)劃
- 九年級(jí)物理第一課
- 代孕合同范本
- 心電監(jiān)護(hù)儀的使用幻燈片
- 食材配送技術(shù)方案
- 全年無(wú)休供貨承諾書(shū)
- 中藥的臨床合理應(yīng)用
- 材料設(shè)備采購(gòu)進(jìn)度計(jì)劃控制措施
- 寧夏銀川三中2023-2024學(xué)年九年級(jí)上學(xué)期期末物理試卷
- SC-21-002億航EH216-S型無(wú)人駕駛航空器系統(tǒng)專(zhuān)用條件
- 測(cè)量學(xué)-第五版-配套課件
- 步科觸摸屏課件
評(píng)論
0/150
提交評(píng)論