C程序設(shè)計(jì)課件3.2_第1頁(yè)
C程序設(shè)計(jì)課件3.2_第2頁(yè)
C程序設(shè)計(jì)課件3.2_第3頁(yè)
C程序設(shè)計(jì)課件3.2_第4頁(yè)
C程序設(shè)計(jì)課件3.2_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論