第6章 循環(huán)結(jié)構(gòu)1_第1頁
第6章 循環(huán)結(jié)構(gòu)1_第2頁
第6章 循環(huán)結(jié)構(gòu)1_第3頁
第6章 循環(huán)結(jié)構(gòu)1_第4頁
第6章 循環(huán)結(jié)構(gòu)1_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1思考:求1~10的累加和?#include<stdio.h>voidmain(){intsum;

sum=1+2+3+4+5+6+7+8+9+10;

printf(“sum=%5d\n”,sum);}2思考:求1~20的累加和?【換一種思路】首先設(shè)置一個累加器sum,其初值為0,利用sum=sum+n來計算(n依次取1、2、……、20);只要解決以下3個問題即可:

(1)將n的初值置為1;

(2)每執(zhí)行1次“sum=sum+n;”后,n增1;

(3)當(dāng)n增到21時,停止計算。此時,sum的值就是1~20的累加和。3第六章循環(huán)結(jié)構(gòu)程序設(shè)計4一、goto語句二、while語句三、do-while語句四、for語句五、幾種循環(huán)的比較六、break、continue語句主要內(nèi)容5格式goto語句標(biāo)號;#include<stdio.h>voidmain(){intn=1,sum=0;

loop:sum=sum+n;n++;if(n<=100)goto

loop;printf(“sum=%d\n”,sum);}

舉例使用goto語句與if語句配合構(gòu)成循環(huán)結(jié)構(gòu),實現(xiàn)1~100的累加和。作用:使程序轉(zhuǎn)向標(biāo)號所在的語句行執(zhí)行。標(biāo)號的命名規(guī)則遵循標(biāo)識符命名規(guī)則。一、goto語句(轉(zhuǎn)向語句)6(1)與if語句一起構(gòu)成循環(huán)結(jié)構(gòu)。(2)不符合結(jié)構(gòu)化程序設(shè)計原則,一般不用。說明一、goto語句循環(huán)結(jié)構(gòu)注意以下幾個問題何時進入循環(huán)(循環(huán)條件)循環(huán)體是什么?如何結(jié)束循環(huán)(循環(huán)體中應(yīng)有使循環(huán)條件趨近于0的語句)8格式while(表達式)循環(huán)體語句含義當(dāng)表達式為真(非0值)時,執(zhí)行while語句中的內(nèi)嵌語句。執(zhí)行過程表達式循環(huán)體語句假

真循環(huán)體語句當(dāng)表達式值為真N-S圖表示二、while語句9說明1、循環(huán)體如果包含一個以上的語句,必須使用復(fù)合語句形式。2、在循環(huán)體中,必須有使循環(huán)條件趨向于不滿足(假)的語句。3、先判斷表達式,后執(zhí)行語句。二、while語句?10sum=55i=1sum=0當(dāng)i<=10sum=sum+i;i++;輸出sum#include<stdio.h>voidmain(){inti,sum;i=1;sum=0;

while(i<=10){sum=sum+i;i++;}printf(“sum=%5d\n”,sum);}1求1~50的累加和.2求1~100的奇數(shù)和.3求1~100的偶數(shù)和.舉例:求1~10的累加和(while語句)11#include<stdio.h>voidmain(){inti,sum;i=1;sum=0;

while(i<=10){sum=sum+i;i++;}printf(“sum=%5d\n”,sum);}思考1、如果去掉循環(huán)體中的大括號,執(zhí)行過程將會怎樣變化?2、在循環(huán)體中,使循環(huán)條件趨向于不滿足(假)的語句是哪條?舉例:求1~10的累加和(while語句)12利用while語句,計算1+1/2+1/4+…+1/50.#include<stdio.h>voidmain(){

floatsum=1;int

i=2;

while(i<=50){sum=sum+1.0/i;

i=i+2;}printf("thesum=%f",sum);}#include<stdio.h>voidmain(){

floatsum=1;inti=1;

while(2*i<=50){sum=sum+1.0/(2*i);

i=i+1;}printf("thesum=%f",sum);}while語句舉例【編程】求若干個學(xué)生平均成績,以輸入負數(shù)成績?yōu)榻Y(jié)束

【算法分析】1.定義變量score存儲學(xué)生成績,定義s=0存儲累加的成績,定義n=0統(tǒng)計錄入的成績數(shù)目。

2.輸入第一個學(xué)生的score3.若score>=0,執(zhí)行第4步,否則執(zhí)行第7步

4.s=s+score;5.n++;

6.錄入下一個score,并返回第3步

7.如果n>0,輸出s/n;否則輸出沒有學(xué)生成績main(){intn=0;floats=0,score;scanf(“%f”,&score);while(score>=0){s=s+score;n++;scanf(“%f”,&score);}if(n>0)printf(“\n%f”,s/n);elseprintf(“nostudentscore!”);}【參考答案】15格式do

循環(huán)體語句while(表達式);含義執(zhí)行do-while語句中的內(nèi)嵌語句,直到表達式為假(0)才跳出循環(huán)。

循環(huán)體語句至少被執(zhí)行一次。三、do-while語句注意:分號不能丟16說明1、循環(huán)體如果包含一個以上的語句,必使用復(fù)合語句形式。2、在循環(huán)體中,必須有使循環(huán)條件趨向于不滿足(假)的語句。3、先執(zhí)行循環(huán)體語句,后判斷表達式的值。執(zhí)行過程表達式循環(huán)體語句假真循環(huán)體語句當(dāng)表達式值為真N-S圖表示至少執(zhí)行一次三、do-while語句17#include<stdio.h>voidmain(){inti,sum;i=1;sum=0;

do{sum=sum+i;i++;}while(i<=10);printf(“sum=%5d\n”,sum);}i=1sum=0當(dāng)i<=10(直到i>10)輸出sumsum=sum+i;i++;舉例:求1~10的累加和(do-while語句)18#include<stdio.h>voidmain(){inti,sum;i=1;sum=0;

do{sum=sum+i;i++;}while(i<=10);printf("sum=%5d\n",sum);}思考1、如果去掉循環(huán)體中的大括號,執(zhí)行過程將會怎樣變化?2、在循環(huán)體中,使循環(huán)條件趨向于不滿足(假)的語句是哪條?求1~10的累加和(do-while語句)19利用do-while語句,計算1+1/2+1/4+…+1/50.#include<stdio.h>voidmain(){floatsum=1;inti=2;do{sum=sum+1.0/i;i=i+2;}while(i<=50);printf("thesum=%f",sum);}main(){intn=0;floats=0,score;do{scanf(“%f”,&score);s=s+score;n++;}while(score>=0);if(n>1)printf(“\n%f”,(s-score)/(n-1));elseprintf(“nostudentscore!”);}【編程】用do-while語句編寫統(tǒng)計學(xué)生平均成績由于do-while語句至少要被執(zhí)行一次,特別要注意n和s的取值問題!【編程】:任意輸入一個自然數(shù),把它反序輸出。(如:原數(shù)為123,輸出321)?!痉治觥看祟}不確定循環(huán)執(zhí)行的次數(shù),也不涉及一個規(guī)律變化的變量,一般用while或do-while來編寫。又由于第一次就要判斷輸入的是否是自然數(shù),通常用while來實現(xiàn)。算法步驟如下:1.定義整型變量a用于存儲輸入的自然數(shù),定義t初值為0用于存放a的反序數(shù),定義i用于依次存放求出的a的每一位的數(shù)值。2.輸入一個自然數(shù)賦值給變量a3.若a>0,執(zhí)行第4步,否則執(zhí)行第7步4.i=a%10;5.t=t*10+i;6.a=a/10,并返回第3步7.輸出t#include<stdio.h>main(){longa,i,t=0;scanf(“%ld”,&a);while(a>0){i=a%10;t=t*10+i;a=a/10;}printf(“\n%ld”,t);}【參考答案】【編程】:任意輸入一個自然數(shù),把它反序輸出。23while和do-while循環(huán)比較24#include<stdio.h>voidmain(){inti,sum=0;scanf(“%d”,&i);

while(i<=10){sum=sum+i;i++;}printf(“sum=%d\n”,sum);}#include<stdio.h>voidmain(){inti,sum=0;scanf(“%d”,&i);

do{sum=sum+i;i++;}while(i<=10);printf(“sum=%d\n”,sum);}

輸入:11sum=0輸出:sum=11什么情況下兩者結(jié)果相同?輸入:1sum=55輸出:sum=55

輸入:10sum=10輸出:sum=10輸入:2sum=54輸出:sum=54

?25while和do-while循環(huán)的比較兩者具有相同的循環(huán)體時:當(dāng)while后面的表達式的第一個值為“真”時,兩種循環(huán)得到的結(jié)果保持一致,否則不一致。26格式for(表達式1;表達式2;表達式3)語句for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)語句執(zhí)行過程(1)先求解表達式1;(2)求解表達式2,若其值為真,則執(zhí)行循環(huán)體語句,然后執(zhí)行第(3)步;若為假,則結(jié)束循環(huán),轉(zhuǎn)到第(5)步;(3)求解表達式3;(4)轉(zhuǎn)向步驟(2);(5)循環(huán)結(jié)束,執(zhí)行for語句下面的一個語句。表達式2循環(huán)體語句假

真求解表達式1求解表達式3四、for語句27sum=55sum=0fori=1to10sum=sum+i輸出sum#include<stdio.h>voidmain(){inti,sum;sum=0;

for(i=1;i<=10;i++)sum=sum+i;printf(“sum=%5d\n”,sum);}1求1~80的累加和.2求1~100的奇數(shù)和.3求1~100的偶數(shù)和.舉例:求1~10的累加和(

for語句)28for(表達式1;表達式2;表達式3)語句說明三個表達式可以省略。表達式2循環(huán)體語句假

真求解表達式3表達式1省略循環(huán)體語句求解表達式1求解表達式3表達式2省略表達式2循環(huán)體語句假

真求解表達式1表達式3省略四、for語句29說明1i=1;for(;i<=10;i++)sum=sum+i;2for(i=1;;i++)sum=sum+i;3for(i=1;i<=10;){sum=sum+i;i++;}for(i=1;i<=10;i++)sum=sum+i;表達式1、2可以省略,但其后的分號不可以省略。沒有循環(huán)結(jié)束條件,構(gòu)成了死循環(huán)for(i=1;i<=10;i++)sum=sum+i;四、for語句30建議:for語句中只放與循環(huán)控制變量有關(guān)的語句。說明5for(;;)sum=sum+i;6表達式1和表達式3可以是與循環(huán)變量無關(guān)的表達式。4for(;i<=10;){sum=sum+i;

i++;}7表達式2一般是關(guān)系表達式,也可以是數(shù)值或字符表達式。while(i<=10){sum=sum+i;i++;}表達式1和表達式3可以同時省略,等同于while語句。for(sum=0,i=1;i<=100;i++)sum=sum+i;例while(1)sum=sum+i;四、for語句31說明1、三種循環(huán)語句在處理循環(huán)問題時,一般可以相互替代。2、

對于循環(huán)次數(shù)固定的問題,用for語句實現(xiàn)比較簡單。3、

對于循環(huán)次數(shù)不確定的問題,可用while語句或do-while語句實現(xiàn)。4、while語句:先判斷,后執(zhí)行。

do-while語句:先執(zhí)行,后判斷。五、幾種循環(huán)語句的比較32結(jié)束整個循環(huán)轉(zhuǎn)向執(zhí)行該循環(huán)結(jié)構(gòu)后面的語句結(jié)束本次循環(huán)繼續(xù)進行下一次循環(huán)的條件判別六、break\continue語句格式while(表達式1){…if(表達式2)break;

…}while(表達式1){…if(表達式2)conitue;

…}33舉例#include<stdio.h>voidmain(){inti,sum=0;for(i=1;i<=10;i++){if(i>5)break;sum=sum+i;}printf(“sum=%5d\n”,sum);#include<stdio.h>voidmain(){inti,sum=0;for(i=1;i<=10;i++){if(i<=5)continue;sum=sum+i;}printf(“sum=%5d\n”,sum);六、break\continue語句sum=15sum=40【編程】判斷n是否為素數(shù)

#include<stdio.h>main(){inti,n;scanf("%d",&n);for(i=2;i<n;i++) if(n%i==0)break;if(i>=n)printf("%dis\n",n);else printf("%disnot\n",n);}1、下列敘述中正確的是A)break語句只能用于switch語句B)在switch語句中必須使用defaultC)break語句必須與switch語句中的case配對使用D.)在switch語句中,不一定使用break語句。2、以下敘述中正確的是A)break語句只能用于switch語句體中B)continue語句的作用是:使程序的執(zhí)行流程跳出包含它的所有循環(huán)C.)break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)。D)在循環(huán)體內(nèi)使用break語句和continue語句的作用相同3、有以下程序main(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}執(zhí)行后的輸出結(jié)果是A.)1.B)2C)4D)死循環(huán)2006-92006-92007-44、有以下程序main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}執(zhí)行后的輸出結(jié)果是5B)24C.)32.

D)405、有以下程序main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5);}程序運行后的輸出結(jié)果是A.)235.B)0235C)02356D)23562006-96、當(dāng)執(zhí)行以下程序時,輸入1234567890<回車>,則其中while循環(huán)體將執(zhí)行________次。#include<stdio.h>main(){charch;while((ch=getchar())=='0')printf("#");}2007-407、若變量已正確定義,有以下程序段i=0;doprintf("%d,",i);

while(i++);printf("%d\n",i);其輸出結(jié)果是

A)0,0B.)0,1.C)1,1D)程序進入無限循環(huán)8、有以下程序

#include<stdio.h>

main()

{int

y=9;

for(;y>0;y--)

if(y%3==0)

printf("%d",--y);

}程序的運行結(jié)果是

A)741

B)963

C.)852.

D)8754212007-92007-99、以下程序的輸出結(jié)果是()#include<stdio.h>main(){

intn=12345,

d;

while(n!=0){d=n%10;printf("%d",d);n/=10;}

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論