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

下載本文檔

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

文檔簡(jiǎn)介

1、5.1 while語句5.2 do-while語句5.3 for語句5.4 break,continue和goto語句5.5循環(huán)嵌套5.6復(fù)合結(jié)構(gòu)節(jié)目示例,5章循環(huán)結(jié)構(gòu)編程,教育目的和基本要求,教育重點(diǎn):各種循環(huán)語句應(yīng)用的特點(diǎn)和相似之處。scanf(“% f”,重復(fù)100次,然后輸出s值。這樣寫肯定很麻煩。我們從程序中注意到了Scanf(“% F”),兩個(gè)句子繼續(xù)重復(fù),如果能用一個(gè)句子自動(dòng)重復(fù)兩個(gè)句子一百次,就可以簡(jiǎn)化寫作的麻煩。這就是循環(huán)語句。編程通過在鍵盤上輸入100名學(xué)生的成績(jī)來解決求總成績(jī)的問題。前面學(xué)的有兩個(gè)茄子解決方案。1.設(shè)定100個(gè)變數(shù),輸入學(xué)生的成績(jī),然后匯總。這種方法浪費(fèi)內(nèi)

2、存空間顯然是不現(xiàn)實(shí)的。2.設(shè)定變數(shù),一次輸入一個(gè)學(xué)生成績(jī),累積,然后輸入下一個(gè)學(xué)生成績(jī)。c語言有三個(gè)茄子循環(huán)結(jié)構(gòu)語句:while、do-while和for語句。前兩個(gè)稱為條件循環(huán)。也就是說,根據(jù)條件確定是否繼續(xù)循環(huán)。第二種稱為計(jì)數(shù)循環(huán)。也就是說,根據(jù)設(shè)置的執(zhí)行次數(shù)執(zhí)行循環(huán)。5.1 while語句,常規(guī)西餐:while(表達(dá)式)語句,1 .表達(dá)式計(jì)算,2 .如果表達(dá)式值不是0牙齒,則執(zhí)行語句,3 .返回第一步,重新計(jì)算表達(dá)式,4 .表達(dá)式值為0時(shí),執(zhí)行過程:while語句示例:?jiǎn)栴}:以獲取學(xué)生的平均成績(jī),輸入負(fù)數(shù)成績(jī)結(jié)束。算法分析: 1。定義變量score以存儲(chǔ)學(xué)生成績(jī),定義s=0以存儲(chǔ)累積的成

3、績(jī),并定義輸入n=0統(tǒng)計(jì)信息的成績(jī)數(shù)。2.輸入第一個(gè)學(xué)生的score 3。如果score=0,請(qǐng)執(zhí)行步驟4。否則,請(qǐng)執(zhí)行步驟7 4。n 5 .運(yùn)行s=s score 6。輸入以下score,然后執(zhí)行步驟3 7。如果為n0,則輸出Float s=0,scoreScanf (%f ,節(jié)目:5.2 dowhile語句,常規(guī)西餐:do語句while(表達(dá)式);1 .執(zhí)行語句,3 .如果表達(dá)式值不為零牙齒,則返回第一步,4。如果表達(dá)式值為0,則循環(huán)結(jié)束,語句至少執(zhí)行一次。2 .計(jì)算表達(dá)式,運(yùn)行進(jìn)程:注意:分號(hào)不能丟失,表達(dá)式,main()int n=0;Float s=0,scoreDo scanf (

4、%f ,使用do-while語句編寫統(tǒng)計(jì)學(xué)生平均成績(jī)的程序。do-while語句必須至少運(yùn)行一次,因此要特別注意n和s的價(jià)值問題!想想這種循環(huán)語句的執(zhí)行結(jié)果: i=1。while(I=100)put char(*);I;由于循環(huán)控制變量I在循環(huán)中沒有變化,所以牙齒循環(huán)永遠(yuǎn)不會(huì)結(jié)束。I;不屬于循環(huán)體。必須更改為:I=1;while(I=100)put char(*);I;在循環(huán)語句中,表達(dá)式的值在循環(huán)執(zhí)行過程中發(fā)生了變化,以避免出現(xiàn)死循環(huán)。用于循環(huán)語句的5.3 for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)語句,常規(guī)格式:1。計(jì)算表達(dá)式1,通常用于在循環(huán)開始之前設(shè)置變量的初始值。2.計(jì)算表達(dá)式2。值

5、0表示循環(huán)結(jié)束。否則,請(qǐng)執(zhí)行步驟3。3.執(zhí)行周期語句。4.計(jì)算表達(dá)式3并返回到步驟2。執(zhí)行進(jìn)程,示例:球體1 2 99,# includemain () int I,s=0;for(I=1);I=99I)s=s I;Printf (s=% d ,s);分析:使用變量I從1到99循環(huán),將I的值與變量S相加,最后輸出S的值。程序如下:如上程序所示,for語句:表達(dá)式1:通常在循環(huán)變量中指定初始值表達(dá)式2:確定循環(huán)是否繼續(xù)運(yùn)行的判別表達(dá)式。牙齒表達(dá)式通常與一個(gè)或多個(gè)變量值相關(guān),通常用于更改表達(dá)式3:循環(huán)收購變量的值(如果牙齒(部分)變量的值發(fā)生更改)。在某些情況下,您可以省略for語句中的表達(dá)式1、

6、2和3,以其他方式實(shí)現(xiàn)這些功能。此外,使用上述示例還說明了在for語句中省略表達(dá)式的情況。1 .略過表示式1:# includemain () int I=1,s=0;for(;I=99I)s=s I;Printf (s=% d ,s);2 .跳過表達(dá)式3:# includemain () int I,s=0;for(I=1);I=99)s=s I;I;Printf (s=% d ,s);3 .也省略表達(dá)式1,3,#include main() int i=1,s=0,因?yàn)镕or(;I=99)s=s I;I;Printf (s=% d ,s);表達(dá)式2也可以省略,但在循環(huán)體中必須使用break

7、。實(shí)現(xiàn)循環(huán)結(jié)束的語句將在后面說明。注釋:省略表達(dá)式,不省略分號(hào)。for語句中的表達(dá)式可以是任何形式的表達(dá)式,逗號(hào)運(yùn)算符參與的表達(dá)式也可以應(yīng)用于for語句,通常應(yīng)用于表達(dá)式1和表達(dá)式3。您可以復(fù)蓋上面的示例,如下所示:#include main() int i,s;For(s=0,I=1);I=99S=s i,I);Printf (s=% d ,s);請(qǐng)?jiān)诖颂帣z查分號(hào)。其中表達(dá)式1作為逗號(hào)表達(dá)式將初始值分配給多個(gè)變量。表達(dá)式3還將循環(huán)體作為逗號(hào)表達(dá)式寫入。表達(dá)式3寫入順序是不可交換的。例如查找1/100 2/99 1,分析:變量I,從1開始,增量為1;使用變量j從100開始循環(huán),每次減少1。將I

8、/j的值與s相加。Ij結(jié)束循環(huán)時(shí)(即,如果i=j,則為循環(huán)繼續(xù))。最后輸出s。程序如下:#include main() int i,j;float s=0;For(i=1,j=100);I=j;I,j-)s=s(float)I/j;Printf (ns=% f ,s);需要、for、while、do-while比較、循環(huán)結(jié)構(gòu)的所有程序都可以使用for、while、do-while之一完成。例如,即使是請(qǐng)求1、2、99的問題,也可以分別使用while和do-while語句寫如下:while :# includemain () int I=1,s=0;while(I=99)s=s I;I;Prin

9、tf (ns=% d ,s);do-while:# includemain () int I=1,s=0;dos=s I;I;while(I=99);Printf (ns=% d ,s);范例:隨機(jī)輸入自然數(shù),以反轉(zhuǎn)順序輸出。(例如,原始數(shù)量為123,輸出為321)。分析:牙齒問題不確定循環(huán)運(yùn)行次數(shù),也不涉及規(guī)則變化的變量。通常寫為while或do-while。另外,一開始要判斷輸入是否是自然數(shù),所以通常是while。算法步驟如下:1 .定義整數(shù)變量a以存儲(chǔ)輸入的自然數(shù),定義t初始值0以定義保留a的倒數(shù),定義I以按順序存儲(chǔ)計(jì)算的a中每個(gè)位的數(shù)值。2.變量a 3 .在A0中輸入自然數(shù)分配,然后執(zhí)

10、行步驟4。否則,請(qǐng)執(zhí)行步驟7 4。I=a5。t=t * 10i 6。執(zhí)行a=a/10,步驟3 7。返回輸出t,節(jié)目:Scanf(“% LD”,其中a的值可能很大,因此使用long類型定義變量a。要獲得更大的值,可以使用unsigned long類型。問:如果A使用雙精度,并將I=a更改為I=(長(zhǎng))a% 10,那么將A=a/10更改為a=(長(zhǎng))a/10就可以了嗎?a:不!例如2/3、4/5、6/9、10/15列。合計(jì)牙齒系列的前30個(gè)項(xiàng)。1 .初始值i=2、j=3、s=0;2.使用n從1到30 5。輸出s;3 .s=s I/j;4.c=I;I=j 1;J=c j,算法分析:對(duì)于數(shù)列問題,首先要找

11、到通項(xiàng)公式或前后項(xiàng)的計(jì)算關(guān)系公式,并根據(jù)公式要求。數(shù)列的問題一般可以決定執(zhí)行次數(shù),所以用for語句寫更方便。在牙齒問題中,前后項(xiàng)的關(guān)系是,下一項(xiàng)的分子在前一項(xiàng)的分母上加1,下一項(xiàng)的分母是前一項(xiàng)的分子加成。問題解決的想法是用循環(huán)語句求出每個(gè)項(xiàng)目,然后加值。因?yàn)榍笄?0項(xiàng)的和,循環(huán)30次。節(jié)目:#include main() int i=2,j=3,n,c;float s=0;for(n=1);N=30n)s=s(float)I/j;c=I;I=j 1;J=c jprintf(“n % f”,s);牙齒問題的N與循環(huán)主體中的執(zhí)行語句沒有數(shù)字連接,僅用于確定循環(huán)執(zhí)行次數(shù)。5.4 break、cont

12、inue和goto語句。牙齒查詢的功能是將程序從一個(gè)位置切換到另一個(gè)位置。Goto語句應(yīng)使程序的結(jié)構(gòu)和可讀性都惡化,避免可能的使用,此處不進(jìn)行說明。5.4.1 break語句,其作用是將進(jìn)程切換到其結(jié)構(gòu)。您可以在Switch分支結(jié)構(gòu)中使用break語句,以使流程偏離switch分支結(jié)構(gòu)。同樣,在循環(huán)結(jié)構(gòu)中,使用break語句使進(jìn)程脫離當(dāng)前循環(huán)層次,并切換到循環(huán)結(jié)構(gòu)后面的語句。常規(guī)格式:break,main() int s=0,I=1: for(;if(i99)break;s=s I;I;Printf (s=% d ,s);示例:上述1 2 99計(jì)算程序可以同時(shí)省略for循環(huán)中的三個(gè)表達(dá)式,復(fù)蓋

13、如下:牙齒程序中,i99使用break語句強(qiáng)制結(jié)束for循環(huán),然后繼續(xù)執(zhí)行for語句之后的下一個(gè)語句。5.4.2 continue語句,牙齒語句稱為繼續(xù)語句。在循環(huán)結(jié)構(gòu)中,執(zhí)行continue語句以提前終止循環(huán)。也就是說,在循環(huán)主體的continrue語句下,跳過未執(zhí)行的循環(huán)語句,但不退出整個(gè)循環(huán),繼續(xù)確定下一循環(huán)的條件。如果條件為真,則繼續(xù)執(zhí)行循環(huán)語句。常規(guī)格式:continue,例如:想想以下程序執(zhí)行哪些功能。#include main() int i,s=0;for(I=1);I=100I)if(I % 5=0)continue;s=s I;printf(“n % d”,s);在左邊的程序中,I循環(huán)從1到100。當(dāng)I是5的倍數(shù)時(shí)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論