第五章循環(huán)結(jié)構(gòu)_第1頁(yè)
第五章循環(huán)結(jié)構(gòu)_第2頁(yè)
第五章循環(huán)結(jié)構(gòu)_第3頁(yè)
第五章循環(huán)結(jié)構(gòu)_第4頁(yè)
第五章循環(huán)結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩52頁(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)介

CProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgramCProgram第5章循環(huán)控制用while語(yǔ)句設(shè)計(jì)循環(huán)結(jié)構(gòu)程序用do_while設(shè)計(jì)循環(huán)結(jié)構(gòu)程序用for語(yǔ)句設(shè)計(jì)循環(huán)結(jié)構(gòu)程序本章內(nèi)容復(fù)習(xí)提問(wèn)1、請(qǐng)從鍵盤(pán)輸入五個(gè)學(xué)生成績(jī),輸出總成績(jī)并統(tǒng)計(jì)不及格人數(shù).main(){floats1,s2,s3,s4,s5,sum;intcount=0;printf(“input5scores:\n”);

scanf("%f,%f,%f,%f,%f",&s1,&s2,&s3,&s4,&s5);

sum=s1+s2+s3+s4+s5;

if(s1<60)count++;if(s2<60)count++;if(s3<60)count++;if(s4<60)count++;if(s5<60)count++;

printf(“sum=%6.2f,count=%d\n",sum,count);}思考如果要是有50個(gè)學(xué)生呢?概述一.引入循環(huán)控制語(yǔ)句的作用當(dāng)滿足一定條件時(shí),重復(fù)執(zhí)行一段程序.基本結(jié)構(gòu)之一.二.設(shè)置循環(huán)需要考慮的問(wèn)題循環(huán)初值,循環(huán)條件的設(shè)置,循環(huán)條件的修改.三.C語(yǔ)言中可用以下語(yǔ)句實(shí)現(xiàn)循環(huán)

用goto語(yǔ)句和if語(yǔ)句構(gòu)成循環(huán)------盡量避免使用用while語(yǔ)句用do—while語(yǔ)句用for語(yǔ)句while語(yǔ)句當(dāng)型循環(huán)一般形式:while(表達(dá)式)

循環(huán)體語(yǔ)句執(zhí)行流程:特點(diǎn):先判斷表達(dá)式,后執(zhí)行循環(huán)體當(dāng)滿足條件時(shí),一直做某事當(dāng)表達(dá)式為真循環(huán)體while語(yǔ)句表達(dá)式語(yǔ)句0非0說(shuō)明:循環(huán)體有可能一次也不執(zhí)行循環(huán)體可為任意類型語(yǔ)句下列情況,退出while循環(huán)條件表達(dá)式不成立(為零)循環(huán)體內(nèi)遇break,return,goto無(wú)限循環(huán):while(1)

循環(huán)體語(yǔ)句;while語(yǔ)句注意:

循環(huán)體若包含一個(gè)以上語(yǔ)句,應(yīng)該用花括號(hào)括起來(lái)(使用復(fù)合語(yǔ)句)。循環(huán)體內(nèi),應(yīng)注意設(shè)置修改循環(huán)條件的語(yǔ)句。否則循環(huán)無(wú)法終止。while語(yǔ)句#include<stdio.h>main(){inti,sum=0;

i=1;

while(i<=100)

{

sum=sum+i;

i++;

}

printf("%d",sum);}循環(huán)初值循環(huán)終值循環(huán)變量增值循環(huán)條件循環(huán)體例用while循環(huán)求1+2+3…+100編程計(jì)算1~10的平方和

執(zhí)行過(guò)程isum10+1*1=121+2*2=535+3*3=14414+4*4=30530+5*5=55655+6*6=91791+7*7=1408140+8*8=2049204+9*9=285285+10*10=38511文件包含循環(huán)初值主函數(shù)#include<stdio.h>main(){}inti=1,sum=0;while(){}i<=10sum+=i*i;i++;循環(huán)條件循環(huán)變量增值將i的平方累加到sum中練習(xí)思考Printf(“sum=%d”,sum);運(yùn)行結(jié)果:sum=385編程計(jì)算50個(gè)學(xué)生成績(jī)的和并統(tǒng)計(jì)不及格人數(shù)思考練習(xí)main(){floatscore,sum=0;inti=1,count=0;while(i<=50){printf(“inputascore:\n”);

scanf("%f",&score);

sum+=score;

if(score<60)count++;

i++;}

printf(“sum=%10.2f,count=%d\n",sum,count);}do~while語(yǔ)句直到型循環(huán)一般形式:do

循環(huán)體語(yǔ)句while(表達(dá)式);執(zhí)行流程:特點(diǎn):先執(zhí)行循環(huán)體,后判斷表達(dá)式一直做某事,直到不滿足條件為止循環(huán)體直到P為假表達(dá)式語(yǔ)句假真do-while語(yǔ)句表達(dá)式循環(huán)體假(0)真(非0)循環(huán)體While循環(huán)說(shuō)明:至少執(zhí)行一次循環(huán)體do~while可轉(zhuǎn)化成while結(jié)構(gòu)do-while語(yǔ)句例用do~while循環(huán)求#include<stdio.h>main(){inti,sum=0;i=1;

do

{

sum+=i; i++;

}while(i<=100);

printf("%d",sum);}循環(huán)初值循環(huán)終值循環(huán)變量增值循環(huán)條件循環(huán)體do-while語(yǔ)句表達(dá)式循環(huán)體語(yǔ)句假真表達(dá)式循環(huán)體語(yǔ)句假真

先判斷條件,后執(zhí)行語(yǔ)句先執(zhí)行語(yǔ)句,后判斷條件do

循環(huán)體語(yǔ)句while(表達(dá)式);while(表達(dá)式)

循環(huán)體語(yǔ)句while語(yǔ)句與do—while語(yǔ)句的比較例1:求1+2+3+······+n的值,n值通過(guò)鍵盤(pán)輸入。main(){intn,k=1,s=0;printf(“inputaninteger:\n”);scanf(“%d”,&n);while(k<=n){s=s+k;k++;}printf(“s=%d\n”,s);}main(){intn,k=1,s=0;printf(“inputaninteger:\n”);scanf(“%d”,&n);do{s=s+k;k++;}while(k<=n);printf(“s=%d\n”,s);}輸入5時(shí)結(jié)果為:s=15輸入0時(shí)結(jié)果為:s=0輸入5時(shí)結(jié)果為:s=15輸入0時(shí)結(jié)果為:s=1結(jié)論:當(dāng)while后的表達(dá)式第一次為真時(shí),while語(yǔ)句和do-while語(yǔ)句的結(jié)果相同,否則不同。while語(yǔ)句與do—while語(yǔ)句的比較例:用π/4≈1-1/3+1/5-1/7+……公式求π的近似值,直到最后一項(xiàng)的絕對(duì)值小于10-6為止程序舉例分析問(wèn)題:1、1-1/3+1/5-1/7+……要先求出來(lái)2、其中每一項(xiàng)為一個(gè)分?jǐn)?shù)且有規(guī)律。3、每一項(xiàng)的分子為1、-1、1、-14、分母1、3、5、7序號(hào)分子(a)分母(b)1112-11+2=3313+2=5………………nanbnn+1-anbn+2遞推公式分子(a):an+1=an且

a1=1分母(b):bn+1=bn+2且b1=1每項(xiàng)(x):x=a/b且x=1和(s):s=s+x且s=0開(kāi)始a=1,b=1,x=1,s=0|x|>=10-6s=s+xa=-ab=b+2x=a/b非00s=s*4輸出s結(jié)束#include<stdio.h>#include<math.h>main(){floata,b,x,s;a=1;b=1;x=1;s=0;while(fab(x)>=1e-6)

{

s+=x; a=-a;b=b+2;x=a/b;

}s*=4; printf(“pi=%10.6f\n",s);}有一分?jǐn)?shù)序列1/2,2/3,3/5,5/8,8/13,……求出這個(gè)數(shù)列的前20項(xiàng)之和。練習(xí)思考分析問(wèn)題:1、每一項(xiàng)為一個(gè)分?jǐn)?shù)且有規(guī)律。2、每一項(xiàng)的分子為1、2、3、5、83、每一項(xiàng)的分母為2、3、5、8、序號(hào)分子(a)分母(b)112221+2=3332+3=5453+5=8………………nanbnn+1bnan+bn

遞推公式#include<stdio.h>#include<math.h>main(){floata,b,x,s,t;inti=1;a=1;b=2;x=0.5;s=0;while(i<=20)

{

s+=x; a=b;b=a+b;x=a/b;i++;

}printf(“s=%10.6f\n",s);}t=a;a=b;b=t+b;小結(jié)引入循環(huán)控制語(yǔ)句的作用設(shè)置循環(huán)需要考慮的問(wèn)題

循環(huán)初值循環(huán)條件的設(shè)置循環(huán)條件的修改.實(shí)現(xiàn)循環(huán)的方法:用while語(yǔ)句用do—while語(yǔ)句作業(yè)補(bǔ)充1、下面這個(gè)程序執(zhí)行后i和s的值為多少?(單選)#include<stdio.h>voidmain(){inti,s;i=0;s=0;while(i<10);{s+=(i++);printf("%d\n",s);}printf("i=%d\n",i);}A.i值為9,s值為45B.i值為10,s值為45C.i值為10,s值為36D.程序陷入了死循環(huán)2.請(qǐng)分析下面程序?qū)崿F(xiàn)功能#include<stdio.h>main(){ intnumber,sum=0; scanf("%d",&number);

while(number)

{

sum+=number; scanf("%d",&number);

} printf("sum=%d\n",sum);}while(number!=0)作業(yè)本講內(nèi)容:第5章循環(huán)控制(二)for語(yǔ)句的格式及控制原理用for語(yǔ)句設(shè)計(jì)循環(huán)結(jié)構(gòu)程序循環(huán)的嵌套break語(yǔ)句和continue語(yǔ)句復(fù)習(xí)提問(wèn)1.請(qǐng)分析下面程序?qū)崿F(xiàn)功能#include<stdio.h>main(){ intnumber,sum=0; scanf("%d",&number);

while(number!=0)

{

sum+=number; scanf("%d",&number);

} printf("sum=%d\n",sum);}功能:計(jì)算鍵盤(pán)輸入數(shù)據(jù)和,直到輸入0為止for語(yǔ)句一、for語(yǔ)句的一般格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句二、for循環(huán)的控制原理1、執(zhí)行過(guò)程:表達(dá)式2表達(dá)式1語(yǔ)句表達(dá)式3假真注意:表達(dá)式1只執(zhí)行一次先判斷后執(zhí)行表達(dá)式3相當(dāng)于循環(huán)語(yǔ)句的延伸。它們之間的區(qū)別可由程序設(shè)計(jì)者掌握

2、幾點(diǎn)說(shuō)明:

(1)for語(yǔ)句最簡(jiǎn)單的應(yīng)用形式:

for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量值調(diào)整)

語(yǔ)句for語(yǔ)句例1:用for語(yǔ)句求:main(){inti,sum=0;

for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}main(){inti=1,sum=0;while(i<=100){sum+=i;i++;}printf("%d",sum);}用while語(yǔ)句:for語(yǔ)句用for循環(huán)語(yǔ)句:(2)三個(gè)表達(dá)式均可缺省,但起分割作用的兩個(gè)分號(hào)不可省略。例如:for(;;)

表達(dá)式1省略:

應(yīng)在for之前對(duì)循環(huán)變量賦初值。表達(dá)式2省略:

則不判斷條件,循環(huán)無(wú)終止進(jìn)行下去。表達(dá)式3省略:

則應(yīng)另設(shè)法保證循環(huán)的結(jié)束。

for語(yǔ)句main(){inti,sum=0;

for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}main(){inti=1,sum=0;while(i<=100){sum+=i;i++;}printf("%d",sum);}用while語(yǔ)句:for語(yǔ)句用for語(yǔ)句:main(){inti,sum=0;

i=1;for(;i<=100;i++)sum+=i;printf("%d",sum);}main(){inti=1,sum=0;while(i<=100){sum+=i;i++;}printf("%d",sum);}用while語(yǔ)句:for語(yǔ)句用for語(yǔ)句:main(){inti,sum=0;

i=1;for(;;i++){if(i>100)break;sum+=i;}printf("%d",sum);}main(){inti=1,sum=0;while(i<=100){sum+=i;i++;}printf("%d",sum);}用while語(yǔ)句:for語(yǔ)句用for語(yǔ)句:main(){inti=1,sum=0;while(i<=100){sum+=i;i++;}printf("%d",sum);}用while語(yǔ)句:for語(yǔ)句用for語(yǔ)句:main(){inti,sum=0;

i=1;for(;i<=100;){sum+=i;

i++;}printf("%d",sum);}(3)表達(dá)式1和表達(dá)式3可為逗號(hào)表達(dá)式

for語(yǔ)句例2:main(){inti,j,sum=0;for(i=1,j=10;i<=j;i++,j--)sum+=i+j;printf(“%d”,sum);}(4)for語(yǔ)句的循環(huán)體還可為另一個(gè)循環(huán)語(yǔ)句例1:輸出Fibonacci數(shù)列的前40項(xiàng)。11235813……for語(yǔ)句三、for語(yǔ)句的應(yīng)用示例f1=1,f2=1fori=1to20輸出f1和f2f1=f1+f2f2=f1+f2算法流程圖:?jiǎn)栴}分析:f1=1(n=1)f2=1(n=2)fn=fn-1+fn-2(n>=3)main(){longintf1,f2

;inti;f1=1;f2=1;for(i=1;i<=20;i++){printf(“%12ld%12ld”,f1,f2

);f1=f1+f2;f2=f1+f2;if(i%2==0)printf(“\n”);}}goto語(yǔ)句說(shuō)明:標(biāo)號(hào)用標(biāo)識(shí)符表示,即由字母、數(shù)字和下劃線組成,且首字符必須為字母或下劃線。不能用整數(shù)來(lái)作標(biāo)號(hào)用途:1.與if語(yǔ)句一起構(gòu)成循環(huán)結(jié)構(gòu)。2.從循環(huán)體中跳到循環(huán)體外(一般指最深層)。缺點(diǎn):濫用goto語(yǔ)句,可使程序無(wú)規(guī)律、可讀性差。goto

語(yǔ)句標(biāo)號(hào);………….標(biāo)號(hào):語(yǔ)句;合法標(biāo)識(shí)符一般形式:例用if和goto語(yǔ)句構(gòu)成循環(huán),求1+2+3+……+100sum=0+1sum=1+2=3sum=3+3=6sum=6+4……sum=4950+100=5050問(wèn)題分析:1、用變量sum

存放累加和,初始時(shí)sum清零2、用變量i存放加數(shù),初始時(shí)i=13、判斷i是否大于100,若是轉(zhuǎn)6;否則轉(zhuǎn)44、累加sum=sum+i5、i值加1,i=i+1,轉(zhuǎn)36、輸出sum值流程圖:開(kāi)始0->sum,1->ii<=100輸出sum結(jié)束i=i+1sum=sum+i是否goto語(yǔ)句程序?yàn)椋?include<stdio.h>main(){inti,sum=0;

i=1;loop:

if(i<=100)

{sum+=i; i++;

gotoloop;

}printf("%d",sum);}循環(huán)初值循環(huán)終值循環(huán)變量增值循環(huán)條件循環(huán)體goto語(yǔ)句一、定義

在循環(huán)體內(nèi)又包含一個(gè)循環(huán)結(jié)構(gòu),稱為循環(huán)嵌套。for(;;){···

for(;;){···}}循環(huán)的嵌套如下所示為for循環(huán)體嵌套for循環(huán)的形式:for(i=1;i<=2;i++){for(j=1;j<=2;j++)printf(“%5d”,i+j);}循環(huán)的嵌套例1:分析下列程序段的結(jié)果output:2334分析:iji+j12231324二、程序舉例循環(huán)的嵌套例2:打印輸出下列圖案□□□□*□□□***□□*****□*******行號(hào)空格數(shù)*號(hào)數(shù)141233325417i5-i2*i-1

main(){inti,j,k;

for(i=1;i<=4;i++){for(j=1;j<=5-i;j++)printf(“□”);for(k=1;k<=2*i-1;k++)printf(“*”);

printf(“\n”);}}程序如下:主函數(shù)控制行循環(huán)循環(huán)變量定義每行中的空格每行中的*號(hào)換行練習(xí)打印輸出下列圖案□□□□□*□□□□**□□□***□□****□*****思考行號(hào)空格數(shù)j*號(hào)數(shù)k151242333424515i6-iimain(){}主函數(shù)inti,j,k;控制行循環(huán)

for(i=1;i<=5;i++){}循環(huán)變量定義for(j=1;j<=6-i;j++)printf(“□”);每行中的空格printf(“\n”);每行中的*號(hào)for(k=1;k<=i;k++)printf(“*”);換行練習(xí)常見(jiàn)的幾種循環(huán)嵌套形式:for(;;){···

while(){···}}for循環(huán)體嵌套while循環(huán)for(;;){···

for(;;){···}}for循環(huán)體嵌套for循環(huán)循環(huán)的嵌套do{

do{···}while();}while();do_while循環(huán)體嵌套do_while循環(huán)while(){

do{···}while();

}while循環(huán)體嵌套do_while循環(huán)for(;;)

{

do{···}while()}for循環(huán)體嵌套do-while循環(huán)

do{

for(;;){···}}while();

do_while循環(huán)體嵌套for循環(huán)三種循環(huán)可互相嵌套,層數(shù)不限外層循環(huán)可包含兩個(gè)以上內(nèi)循環(huán),但不能相互交叉嵌套循環(huán)的跳轉(zhuǎn)CBACBAAB嵌套循環(huán)的執(zhí)行流程CBA逐層跳出(break)CBA一次跳出(return,goto)循環(huán)的嵌套幾種循環(huán)的比較三種循環(huán)語(yǔ)句的選用:1.若循環(huán)次數(shù)在執(zhí)行循環(huán)體之前已確定,一般用for若循環(huán)次數(shù)根據(jù)循環(huán)體執(zhí)行情況確定,一般用while或do~while2.當(dāng)循環(huán)體至少執(zhí)行一次,用do~while若循環(huán)體有可能一次也不執(zhí)行,用while

break語(yǔ)句

功能:跳出循環(huán)體或開(kāi)關(guān)體(switch語(yǔ)句)

說(shuō)明:break只能跳出最近一層的結(jié)構(gòu)break語(yǔ)句和continue語(yǔ)句例:小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母,直至輸入非字母字符#include<stdio.h>main(){charc;}

溫馨提示

  • 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)論