C語(yǔ)言程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)課件_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)課件_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)課件_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)課件_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)課件_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)

C

語(yǔ)言程序設(shè)計(jì)

2023/4/202循環(huán)的基本概念不同形式的循環(huán)控制多重循環(huán)問(wèn)題2023/4/203什么是循環(huán)?為什么要使用循環(huán)??5.1循環(huán)的基本概念循環(huán)是有規(guī)律的重復(fù)操作。將復(fù)雜問(wèn)題分解為簡(jiǎn)單的操作過(guò)程,程序只對(duì)簡(jiǎn)單過(guò)程描述,這些過(guò)程的多次重復(fù)就可完成對(duì)問(wèn)題的求解。重復(fù)的頻繁性決定了循環(huán)在程序設(shè)計(jì)中必不可少!一、循環(huán)問(wèn)題問(wèn)題1:?jiǎn)栴}2:求學(xué)生平均成績(jī)分?jǐn)?shù)相加后除以課程數(shù)做99次加法問(wèn)題3:找出數(shù)集x中能同時(shí)被3和7整除的數(shù)

找數(shù)問(wèn)題分解循環(huán)控制2023/4/2055.1循環(huán)的基本概念(續(xù))二、循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)有兩種形式:當(dāng)型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)循環(huán)體N條件Y當(dāng)型循環(huán)直到型循環(huán)條件NY循環(huán)體先判斷后循環(huán)先循環(huán)后判斷入口出口區(qū)別?循環(huán)體中是一個(gè)過(guò)程,該過(guò)程的復(fù)雜程度取決于問(wèn)題及對(duì)問(wèn)題的分解2023/4/2065.1循環(huán)的基本概念(續(xù))循環(huán)體N條件Y當(dāng)型循環(huán)條件循環(huán)次數(shù)Y循環(huán)體?Y執(zhí)行1Y執(zhí)行3Y執(zhí)行2N結(jié)束

循環(huán)體Y?循環(huán)體Y

??N3次在循環(huán)入口處判斷當(dāng)條件為真時(shí)執(zhí)行循環(huán)2023/4/2075.1循環(huán)的基本概念(完)直到型循環(huán)在循環(huán)出口處判斷,當(dāng)條件為真時(shí)繼續(xù)執(zhí)行循環(huán),直到條件為假時(shí)為止。條件NY循環(huán)體條件循環(huán)次數(shù)執(zhí)行1Y

執(zhí)行3Y

執(zhí)行2N

結(jié)束

3次Y條件循環(huán)體Y條件循環(huán)體Y條件循環(huán)體Y

執(zhí)行4條件循環(huán)體N4次循環(huán)至少執(zhí)行一次2023/4/2085.2while循環(huán)控制語(yǔ)句一般格式while(表達(dá)式)

{語(yǔ)句組}

一般為關(guān)系表達(dá)式或邏輯表達(dá)式,也可以是C語(yǔ)言其他類(lèi)型的合法表達(dá)式

用來(lái)控制循環(huán)體是否被執(zhí)行稱(chēng)為內(nèi)嵌語(yǔ)句,可以是基本語(yǔ)句、控制語(yǔ)句,也可以是復(fù)合語(yǔ)句是循環(huán)重復(fù)執(zhí)行的部分當(dāng)條件為真時(shí)執(zhí)行循環(huán)體2023/4/2010當(dāng)表達(dá)式為真語(yǔ)句N(xiāo)-S結(jié)構(gòu)圖NY流程圖表達(dá)式非0?語(yǔ)句循環(huán)控制條件循環(huán)體語(yǔ)句一般格式while(表達(dá)式)

{語(yǔ)句組}

2023/4/2011例如:【例5.1】編寫(xiě)程序,求100個(gè)自然數(shù)的和即:

s=1+2+3+…+100

思路:尋找加數(shù)與求和的規(guī)律

加數(shù)i——從1變到100,每循環(huán)一次,使i增1,直到i的值超過(guò)100。i的初值設(shè)為1。求和——設(shè)變量

sum存放和,循環(huán)求sum=sum+i,直至i超過(guò)100。

2023/4/2013注意:如果while的(表達(dá)式)值為0,則循環(huán)體一次也不執(zhí)行

(例如當(dāng)i的初值=101)。在循環(huán)體中必須有使循環(huán)趨向結(jié)束的操作,否則循環(huán)將無(wú)限進(jìn)行(死循環(huán))。在循環(huán)體中,語(yǔ)句的先后位置必須符合邏輯,否則會(huì)影響運(yùn)算結(jié)果。思考程序段的輸出?

……i=1;sum=0;while(i<=100){i++;sum=sum+i;}運(yùn)行后,輸出:sum=5150原因是什么?

2023/4/2014注意(續(xù)):總結(jié):為了保證循環(huán)正常運(yùn)行,應(yīng)該特別注意:循環(huán)控制條件的描述

控制條件的初始狀態(tài)(初始值)

循環(huán)體內(nèi)部對(duì)控制條件的影響2023/4/20155.3do-while語(yǔ)句語(yǔ)句一般格式do

{語(yǔ)句組}while(表達(dá)式);

功能:先執(zhí)行內(nèi)嵌語(yǔ)句(循環(huán)體),之后計(jì)算表達(dá)式的值,不為0(邏輯真)時(shí),再執(zhí)行循環(huán)體并判斷條件,直到表達(dá)式的值為0結(jié)束循環(huán),轉(zhuǎn)去執(zhí)行while下面的語(yǔ)句。直到條件為假時(shí)結(jié)束循環(huán)2023/4/2017

voidmain(){intn=1,s=0,x;scanf("%d",&x);printf("s=%d\n",s);}求:流程圖n<=xs=s+nYn加1開(kāi)始初始化n,s,x輸入xdo{s=s+n;n++;}

while(n<=x);dowhileN輸出s結(jié)束2023/4/2018/*ex1-1.C*/voidmain(){ints=0,x;scanf("%d",&x);

while(x<=10)

{s=s+x;x++;}printf("s=%d\n",s);}/*ex1.C*/voidmain(){ints=0,x;scanf("%d",&x);

do

{s=s+x;x++;}

while(x<=10);printf("s=%d\n",s);}例循環(huán)至少執(zhí)行一次循環(huán)沒(méi)有被執(zhí)行三、while與dowhile的比較輸出:s=12輸出:s=0如輸入為1和12,兩程序各輸出情況?輸入12時(shí):2023/4/20195.4for語(yǔ)句語(yǔ)句一般格式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句循環(huán)初始條件循環(huán)控制條件循環(huán)體1.求解表達(dá)式1;2.求解表達(dá)式2,值為真(非0)執(zhí)行循環(huán)體,然后執(zhí)行第3步;值為假(0)則結(jié)束循環(huán),轉(zhuǎn)到第5步,3.求解表達(dá)式3;4.轉(zhuǎn)回第2步。5.循環(huán)結(jié)束,執(zhí)行for語(yǔ)句下面的語(yǔ)句。

2023/4/2021for循環(huán)控制語(yǔ)句

for(e1;e2;e3)

e1、e2、e3均可缺少for(;n<100;n++)缺少e1,n應(yīng)在循環(huán)之前賦初值

for(n=0;;n++)缺少e2,造成死循環(huán)for(n=0;n<100;)缺少e3,n增量應(yīng)在循環(huán)體內(nèi)進(jìn)行for(;;)缺少e1,e2,e3,死循環(huán)!for(;n<100;)缺少e1,e3分號(hào)始終不能缺少!討論可結(jié)合跳轉(zhuǎn)語(yǔ)句使用,一般情況下不使用2023/4/2022for循環(huán)控制語(yǔ)句for(初值;判斷;增量)語(yǔ)句;for(初值;判斷;增量)

{復(fù)合語(yǔ)句;}for(初值;判斷;增量);2.e1和e3可是與初值、增量無(wú)關(guān)的逗號(hào)表達(dá)式for(s=0,n=1;n<=100;s=s+n,printf(“%d”,s))n++;for(s=0;n<100;s=s+n,n++){printf(“%d”,s);}求累加和n的初值在for之前完成增量在for之外完成for語(yǔ)句的形式:2023/4/2023for循環(huán)控制語(yǔ)句voidmain(){intn=1,s=0,x;scanf("%d",&x);for(;n<=x;n++)s=s+n;printf("s=%d\n",s);}while(n<=x){s=s+n;n++;}voidmain(){intn,s,x;scanf("%d",&x);

for(n=1,s=0;n<=x;n++)

s=s+n;printf("s=%d\n",s);}例缺少e1賦初值語(yǔ)句

2023/4/20255.5循環(huán)結(jié)構(gòu)中的跳轉(zhuǎn)語(yǔ)句有如下三種語(yǔ)句實(shí)現(xiàn)跳轉(zhuǎn):continue語(yǔ)句break語(yǔ)句goto語(yǔ)句功能:在循環(huán)語(yǔ)句的循環(huán)體中使用,可以進(jìn)行循環(huán)的流程控制2023/4/2026后續(xù)語(yǔ)句…continue;

…YN表達(dá)式?后續(xù)語(yǔ)句…continue;…表達(dá)式?YN5.5.1continue語(yǔ)句及應(yīng)用功能:中斷循環(huán)體的本次執(zhí)行(即跳過(guò)循環(huán)體中尚未執(zhí)行的語(yǔ)句),立即開(kāi)始執(zhí)行下一次循環(huán)。while語(yǔ)句do-while語(yǔ)句后續(xù)語(yǔ)句計(jì)算表達(dá)式3計(jì)算表達(dá)式1…continue;…表達(dá)式2?YNfor語(yǔ)句2023/4/2029算法和程序#include"stdio.h"voidmain(){intn,j=0;for(n=100;n<=200;n++){if(n%7!=0)continue; printf("%6d",n);

j++;

if(j%10==0)printf("\n");

}printf("\nj=%d\n",j);}2023/4/2030后續(xù)語(yǔ)句…break;…YN表達(dá)式?后續(xù)語(yǔ)句…break;…表達(dá)式?YN5.5.2循環(huán)中break的應(yīng)用功能:利用break語(yǔ)句能夠強(qiáng)迫終止本層循環(huán),轉(zhuǎn)到后續(xù)語(yǔ)句執(zhí)行。while語(yǔ)句do-while語(yǔ)句后續(xù)語(yǔ)句計(jì)算表達(dá)式3計(jì)算表達(dá)式1…break;…表達(dá)式2?YNfor語(yǔ)句2023/4/2031例如:⑴intx,n=0,s=0;while(n<10){scanf("%d",&x);

if(x<0)break;s+=x;n++;};⑵intx,n=0,s=0;do{scanf("%d",&x);

if(x<0)break;s+=x;n++;}while(n<10);⑶for(n=0,s=0;n<10;n++){scanf("%d",&x);

if(x<0)break;s+=x;}2023/4/20325.6循環(huán)的嵌套如果循環(huán)語(yǔ)句的循環(huán)體內(nèi)又包含了另一條循環(huán)語(yǔ)句,則稱(chēng)為循環(huán)的嵌套例如:

#include<stdio.h>voidmain(){inti,j;

for(i=1;i<10;i++)for(j=1;j<=i;j++)printf((j==i)?"%4d\n":"%4d",i*j);

}外循環(huán)語(yǔ)句內(nèi)循環(huán)語(yǔ)句2023/4/2033注意:while、do-while、for循環(huán)語(yǔ)句可以并列,也可以相互嵌套,但要層次清楚,不能出現(xiàn)交叉。多重循環(huán)程序執(zhí)行時(shí),外層循環(huán)每執(zhí)行一次,內(nèi)層循環(huán)都需要循環(huán)執(zhí)行多次。例如:for(a=1;a<=10;a++){for(b=0;b<=5;b++)

……}外循環(huán)執(zhí)行了10次,每次外循環(huán)中內(nèi)循環(huán)執(zhí)行6次循環(huán)正常結(jié)束時(shí),內(nèi)循環(huán)執(zhí)行了10×6=60次2023/4/2034

5.7循環(huán)結(jié)構(gòu)程序設(shè)計(jì)【例5.5】按每行輸出5個(gè)數(shù)的形式輸出Fibonacci數(shù)列的前20項(xiàng)

。Fibonacci數(shù)列的前幾項(xiàng)是:1、1、2、3、5、8、13、21、34、…。此數(shù)列的變化規(guī)律是:1(n=1)1(n=2)fn-1+fn-2(n>2)fn=思路:設(shè)變量f1、f2和f3,并為f1和f2賦初值1,令f3=f1+f2得到第3項(xiàng);將f1←f2,f2←f3,再求f3=f1+f2得到第4項(xiàng);依此類(lèi)推求第5項(xiàng)、第6項(xiàng)…這是一種遞推算法應(yīng)采用循環(huán)實(shí)現(xiàn)2023/4/2035算法和程序#include"stdio.h"#defineN20voidmain(){inti,f1,f2,f3;f1=f2=1;printf("\n%8d%8d",f1,f2);for(i=3;i<=N;i++)

{f3=f1+f2;f1=f2;f2=f3;printf("%8d",f3);

if(i%5==0)printf("\n");

}

}f1=1,f2=1并輸出for(i=3;i<=20;i++)f3=f2+f1f1=f2,f2=f3

輸出f3

輸出5個(gè)數(shù)

TF

換行2023/4/2036舉例【例5.6】判斷輸入的某個(gè)數(shù)m是否為素?cái)?shù)。若是素?cái)?shù),輸出“YES”,若不是,輸出“NO”。

思路:素?cái)?shù)是指只能被1和它本身整除的數(shù),如5、7、11、17、…等。

分別用2、3、…,m-1嘗試能否整除整數(shù)m。如果m能被某個(gè)數(shù)整除,則m就不是素?cái)?shù)。這是一種窮舉算法設(shè)除數(shù)為j,從2循環(huán)到m-12023/4/2037算法和程序:#include"math.h"voidmain(){intj,m,k;printf("Enteranintegernumber:");scanf("%d",&m);for(j=2;j<=m-1;j++)

if(m%j==0)break;printf("%d",m);if(j>=m)printf("YES\n");elseprintf("NO\n");}

輸入一個(gè)數(shù)mfor(j=2;j<=m-1;j++)m%j==0TF

退出循環(huán)

j>=mTF輸出"YES“輸出"NO"2023/4/2038舉例【例5.7】編程序求2~10000以?xún)?nèi)的完全數(shù)。

完全數(shù):一個(gè)數(shù)的因子(除了這個(gè)數(shù)本身)之和等于該數(shù)本身。思路:設(shè)定i從2變到10000,對(duì)每個(gè)i找到其因子和s;判定i==s?若相等,則i為完全數(shù),否則不是。

例如:6的因子是1、2、3,因子和1+2+3=6因此6是完全數(shù)使用窮舉算法用雙層循環(huán)實(shí)現(xiàn)2023/4/2039算法和程序:#include"stdio.h"voidmain(){inti,j,s;

for(i=2;i<=10000;i++)

{s=0;

for(j=1;j<i;j++)if(i%j==0)s+=j;if(i==s)printf("%6d\n",s);

}}for(i=2;i<=10000;i++)s=0for(j=1;j<i;j++)i%j==0TFs=s+j

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論