[高等教育]C語(yǔ)言第5章 循環(huán)結(jié)構(gòu)設(shè)計(jì)ppt課件_第1頁(yè)
[高等教育]C語(yǔ)言第5章 循環(huán)結(jié)構(gòu)設(shè)計(jì)ppt課件_第2頁(yè)
[高等教育]C語(yǔ)言第5章 循環(huán)結(jié)構(gòu)設(shè)計(jì)ppt課件_第3頁(yè)
[高等教育]C語(yǔ)言第5章 循環(huán)結(jié)構(gòu)設(shè)計(jì)ppt課件_第4頁(yè)
[高等教育]C語(yǔ)言第5章 循環(huán)結(jié)構(gòu)設(shè)計(jì)ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩27頁(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)介

1、第5章 循環(huán)構(gòu)造程序設(shè)計(jì)一本章主要內(nèi)容本章主要內(nèi)容本節(jié)課主要內(nèi)容本節(jié)課主要內(nèi)容循環(huán)構(gòu)造循環(huán)構(gòu)造構(gòu)造化程序設(shè)計(jì)的根本構(gòu)構(gòu)造化程序設(shè)計(jì)的根本構(gòu)造之一造之一l順序構(gòu)造順序構(gòu)造l選擇構(gòu)造選擇構(gòu)造l循環(huán)構(gòu)造:為處理某一問(wèn)題,或求取某一計(jì)算結(jié)果,循環(huán)構(gòu)造:為處理某一問(wèn)題,或求取某一計(jì)算結(jié)果,l 特定的條件下,程序中反復(fù)地按某一方式進(jìn)展操特定的條件下,程序中反復(fù)地按某一方式進(jìn)展操作。作。l無(wú)休止循環(huán)無(wú)休止循環(huán)死循環(huán)死循環(huán)l有終止循環(huán)有終止循環(huán)有效循環(huán)有效循環(huán)l 條件:循環(huán)體條件:循環(huán)體-需求反復(fù)執(zhí)行的操作需求反復(fù)執(zhí)行的操作l 循環(huán)終了條件循環(huán)終了條件-在什么情況下停頓反復(fù)的操作在什么情況下停頓反復(fù)的操作本章

2、是本章是全書(shū)的全書(shū)的重點(diǎn)和難點(diǎn)!重點(diǎn)和難點(diǎn)!while while 語(yǔ)句語(yǔ)句表達(dá) 式語(yǔ)句(循 環(huán)體)00循環(huán)條件:決循環(huán)條件:決議能否執(zhí)行循議能否執(zhí)行循環(huán)體,表達(dá)式環(huán)體,表達(dá)式值為值為“真真那那么執(zhí)行循環(huán)體么執(zhí)行循環(huán)體循環(huán)體:反復(fù)循環(huán)體:反復(fù)執(zhí)行的操作直執(zhí)行的操作直至表達(dá)式的值至表達(dá)式的值為為false【例【例5.1】求】求 i=100sumsum+iii+1假真sum=0i=1輸 出結(jié) 果sum1001ii例例5.1 編碼實(shí)現(xiàn)編碼實(shí)現(xiàn)“i1可否可否換成:換成:“i0“i=100可可否換成:否換成:“i100“i+沒(méi)有會(huì)沒(méi)有會(huì)怎樣怎樣i、sum不賦不賦初值會(huì)怎樣初值會(huì)怎樣 可以寫(xiě)成:可以寫(xiě)成:

3、 sum + = i ; i + + ; 或:或: sum + = i + + ;假設(shè)寫(xiě)成:假設(shè)寫(xiě)成: sum + = + + i ; 會(huì)有什么問(wèn)題?會(huì)有什么問(wèn)題? int i = 1 , sum = 0 ; while ( i = 100 ) sum = sum + i ; i + ; 1001iisum留意:留意:p12 4次執(zhí)行;n2*pp.2*pp2*pp1p【例【例5.25.2】求】求2n2n i=1, p=1 i n ? p = p * 2 i = i + 1 計(jì)數(shù)計(jì)數(shù)器器次執(zhí)行;n2*pp.2*pp2*pp1p【例【例5.25.2】求】求2n2n循環(huán)規(guī)循環(huán)規(guī)律律【例【例5.25.

4、2】求】求2n2nmain()int i=1,n;long int p=1;scanf(%d,&n);while(i=n) p*=2; i+; printf(%dn,p);i=1,p=1 輸出 p輸入 n當(dāng)i=npp*2ii+1計(jì)數(shù)器計(jì)數(shù)器賦初值賦初值循環(huán)條件循環(huán)條件終了條件終了條件改動(dòng)循環(huán)改動(dòng)循環(huán)條件語(yǔ)句條件語(yǔ)句運(yùn)算前運(yùn)算前賦初值賦初值【例【例5.35.3】求】求mnmnmain()int i=1,m,n;long int p=1;scanf(“%d,&m);scanf(“%d,&n);while(i=n)p*=m; i+; printf(%dn,p);i=1,p=1

5、輸入m,n當(dāng)i=np=p*mi=i+1輸出p循環(huán)三要素循環(huán)三要素l規(guī)律規(guī)律-循環(huán)體的算法循環(huán)體的算法l臨界點(diǎn)臨界點(diǎn)-循環(huán)的條件,循環(huán)終了的條件循環(huán)的條件,循環(huán)終了的條件l循環(huán)條件的改動(dòng)循環(huán)條件的改動(dòng)-如何改動(dòng)使循環(huán)趨于終了如何改動(dòng)使循環(huán)趨于終了容易出錯(cuò)的地方容易出錯(cuò)的地方l變量運(yùn)算前沒(méi)有賦初值變量運(yùn)算前沒(méi)有賦初值l臨界點(diǎn)運(yùn)用臨界點(diǎn)運(yùn)用 = = =出現(xiàn)錯(cuò)誤出現(xiàn)錯(cuò)誤l條件判別永真,出現(xiàn)死循環(huán)條件判別永真,出現(xiàn)死循環(huán)dodowhile while 語(yǔ)句語(yǔ)句=普通方式:普通方式:= do = 循環(huán)體語(yǔ)句循環(huán)體語(yǔ)句= while 表達(dá)式;表達(dá)式;=特點(diǎn):特點(diǎn):=先執(zhí)行一次先執(zhí)行一次指定的循環(huán)內(nèi)嵌語(yǔ)句,指

6、定的循環(huán)內(nèi)嵌語(yǔ)句,然后判別條件表達(dá)式。然后判別條件表達(dá)式。語(yǔ)句表達(dá) 式00圖圖6_4表達(dá)式表達(dá)式循環(huán)體循環(huán)體do_while 表達(dá)式表達(dá)式循環(huán)體循環(huán)體whiledo while 至少執(zhí)行一次循環(huán)體內(nèi)的語(yǔ)句至少執(zhí)行一次循環(huán)體內(nèi)的語(yǔ)句! 【例【例5.45.4】求】求 1001nn #include void main() int i=1,sum=0; do sum=sum+i; i+; while(i=100); printf(“%dn,sum); 改為:改為:i+;sum=sum+i;【例【例5.5】#include Void main() char c; do c=getchar(); if(

7、c=A&c=Z)c+=32; putchar(c); while(c!=n);將鍵盤(pán)輸入字符中一切大寫(xiě)字母轉(zhuǎn)換將鍵盤(pán)輸入字符中一切大寫(xiě)字母轉(zhuǎn)換為小寫(xiě)字母,其他字符不變。為小寫(xiě)字母,其他字符不變。問(wèn)題:試著改為while循環(huán)構(gòu)造。運(yùn)轉(zhuǎn)情況:運(yùn)轉(zhuǎn)情況:COMPUTERCOMPUTER ( (輸入輸入) )computer (computer (輸出輸出) )而不是而不是CcOoMmPpUuTtEeRrCcOoMmPpUuTtEeRr課堂練習(xí)課堂練習(xí) 輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)?!纠纠?.65.6】 用用/41-1/3+1/5-1/7+/41-1/3+

8、1/5-1/7+公式求公式求的近似的近似值,直到某一項(xiàng)的絕對(duì)值小于值,直到某一項(xiàng)的絕對(duì)值小于1e-61e-6為止。為止。思緒:思緒: 用循環(huán)對(duì)各項(xiàng)值迭加,直至被加項(xiàng)用循環(huán)對(duì)各項(xiàng)值迭加,直至被加項(xiàng) 10-6 循環(huán)終止條件:循環(huán)終止條件: | x | 10-6 循環(huán)體算法:循環(huán)體算法: 累加當(dāng)前項(xiàng);累加當(dāng)前項(xiàng); 求下一項(xiàng)值;求下一項(xiàng)值; double s = 0, x = 1, pi ; int k = 1; int sign = 1 ; do s = s+x ; k += 2 ; sign = -sign ; x = sign / (double)k; while ( fabs (x) 1e-6

9、 ) ; pi = s * 4 ; / 累加當(dāng)前項(xiàng)累加當(dāng)前項(xiàng)/ 后項(xiàng)分母后項(xiàng)分母/ 變號(hào)變號(hào)/ 求后項(xiàng)求后項(xiàng)/ 求求 例例5.6 運(yùn)用級(jí)數(shù)求運(yùn)用級(jí)數(shù)求的近似值的近似值121) 1(.715131141nn思緒一:設(shè)第思緒一:設(shè)第 k 項(xiàng)項(xiàng) Xk = 1 / k 第第 k + 1項(xiàng)項(xiàng) Xk+1 = (-1) / ( k + 2 ) 運(yùn)轉(zhuǎn)結(jié)果:運(yùn)轉(zhuǎn)結(jié)果: pi= 3.141594 pi= 3.141594While語(yǔ)句實(shí)現(xiàn)語(yǔ)句實(shí)現(xiàn)#include #includevoid main() int s; float n,t,pi; t=1; pi=0;n=1.0;s=1;while(fabs(t)1e

10、-6)pi=pi+t;n=n+2;s=-s;t=s/n;pi=pi*4; printf(pi=%10.6fn,pi);121) 1(.715131141nn例例5.6 運(yùn)用級(jí)數(shù)求運(yùn)用級(jí)數(shù)求的近似值的近似值 double s = 0, x = 1, pi ; int k = 1; int sign = 1 ; do s = s + x ;k + ; sign =- sign;x = 1.0* sign / ( 2 * k-1 ) ; while ( fabs (x) 1e-6 ) ; pi = s * 4 ; 121) 1(.715131141nn思緒二:直接用通項(xiàng)描畫(huà)迭加思緒二:直接用通項(xiàng)描畫(huà)

11、迭加/ 累加當(dāng)前項(xiàng)累加當(dāng)前項(xiàng)/ 后項(xiàng)分母后項(xiàng)分母/ 變號(hào)變號(hào)/ 求后項(xiàng)求后項(xiàng)/ 精度判別精度判別例例5.6 運(yùn)用級(jí)數(shù)求運(yùn)用級(jí)數(shù)求的近似值的近似值while和和 do-while循環(huán)的比較循環(huán)的比較l凡是能用凡是能用whilewhile循環(huán)處置,都能用循環(huán)處置,都能用dowhiledowhile循環(huán)處置。循環(huán)處置。dowhiledowhile循環(huán)構(gòu)造可以轉(zhuǎn)換成循環(huán)構(gòu)造可以轉(zhuǎn)換成whilewhile循環(huán)構(gòu)造。循環(huán)構(gòu)造。 l在普通情況下,用在普通情況下,用whilewhile語(yǔ)句和用語(yǔ)句和用do-whiledo-while語(yǔ)句處置同語(yǔ)句處置同一問(wèn)題時(shí),假設(shè)二者的循環(huán)體部分是一樣的,它們的結(jié)一問(wèn)題時(shí),

12、假設(shè)二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣。但是假設(shè)果也一樣。但是假設(shè)whilewhile后面的表達(dá)式一開(kāi)場(chǎng)就為假后面的表達(dá)式一開(kāi)場(chǎng)就為假(0(0值值) )時(shí),兩種循環(huán)的結(jié)果是不同的。時(shí),兩種循環(huán)的結(jié)果是不同的。while和和do-while循環(huán)的比較循環(huán)的比較#includevoid main() int sum=0,i; scanf(“%d,&i); while(i=10) sum=sum+i; i+; printf(“sum=%dn ,sum);#includevoid main() int sum=0,i; scanf(“%d,&i); do sum=sum+i;

13、i+;while(i=10);printf(“sum=%dn ,sum); 運(yùn)轉(zhuǎn)結(jié)果:運(yùn)轉(zhuǎn)結(jié)果:11 sum=55 sum=55 再運(yùn)轉(zhuǎn)一次:再運(yùn)轉(zhuǎn)一次: 11 11sum=0sum=0運(yùn)轉(zhuǎn)結(jié)果:運(yùn)轉(zhuǎn)結(jié)果:11 sum=55 sum=55 再運(yùn)轉(zhuǎn)一次:再運(yùn)轉(zhuǎn)一次: 11 11sum=11sum=11控制循環(huán)的方法控制循環(huán)的方法l計(jì)數(shù)器控制循環(huán)計(jì)數(shù)器控制循環(huán)l標(biāo)志控制循環(huán)標(biāo)志控制循環(huán)l計(jì)數(shù)器控制循環(huán)計(jì)數(shù)器控制循環(huán) 常用一個(gè)計(jì)數(shù)器變量常用一個(gè)計(jì)數(shù)器變量(counter)統(tǒng)計(jì)循環(huán)執(zhí)行的次數(shù),統(tǒng)計(jì)循環(huán)執(zhí)行的次數(shù),在循環(huán)執(zhí)行前將其賦予特定的值,并在循環(huán)體執(zhí)行的過(guò)程在循環(huán)執(zhí)行前將其賦予特定的值,并在循環(huán)體

14、執(zhí)行的過(guò)程中不斷對(duì)其進(jìn)展修正,這種用計(jì)數(shù)器控制循環(huán)的方法常運(yùn)中不斷對(duì)其進(jìn)展修正,這種用計(jì)數(shù)器控制循環(huán)的方法常運(yùn)用于確定次數(shù)的循環(huán)用于確定次數(shù)的循環(huán)(definite repetition,即循環(huán)執(zhí)行之前,即循環(huán)執(zhí)行之前知反復(fù)次數(shù)知反復(fù)次數(shù)) 。 運(yùn)用實(shí)例運(yùn)用實(shí)例班里有班里有10個(gè)學(xué)生參與檢驗(yàn),可以提供考個(gè)學(xué)生參與檢驗(yàn),可以提供考試成果試成果( 0到到100的整數(shù)值的整數(shù)值),以確定全班,以確定全班平均成果。平均成果。標(biāo)志控制反復(fù)也稱(chēng)為不確定反復(fù)標(biāo)志控制反復(fù)也稱(chēng)為不確定反復(fù)(indefinite repetition),由于執(zhí)行循環(huán)之前無(wú)法事先知道反復(fù)次數(shù)。由于執(zhí)行循環(huán)之前無(wú)法事先知道反復(fù)次數(shù)。

15、用一個(gè)特殊值作為標(biāo)志值,表示數(shù)據(jù)輸入終了。例:用用一個(gè)特殊值作為標(biāo)志值,表示數(shù)據(jù)輸入終了。例:用戶輸入一個(gè)標(biāo)志值,表示最后一個(gè)成果曾經(jīng)輸入。戶輸入一個(gè)標(biāo)志值,表示最后一個(gè)成果曾經(jīng)輸入。標(biāo)志值不能與可接受的輸入值混淆起來(lái)。標(biāo)志值不能與可接受的輸入值混淆起來(lái)。運(yùn)用實(shí)例:開(kāi)發(fā)一個(gè)計(jì)算全班平均成果的程序,運(yùn)用實(shí)例:開(kāi)發(fā)一個(gè)計(jì)算全班平均成果的程序,在每次程序運(yùn)轉(zhuǎn)時(shí)處置恣意個(gè)成果數(shù)。在每次程序運(yùn)轉(zhuǎn)時(shí)處置恣意個(gè)成果數(shù)。 l標(biāo)志控制循環(huán)標(biāo)志控制循環(huán) 運(yùn)用實(shí)例運(yùn)用實(shí)例: 求求10個(gè)學(xué)生的平均成果個(gè)學(xué)生的平均成果#include void main()int counter=1,total=0,score;flo

16、at average;while(counter=10)printf(input one scoren);scanf(%d,&score);total=total+score;counter+;average=(float)total/10;printf(the average is %fn,average);計(jì)數(shù)器控制循環(huán)計(jì)數(shù)器控制循環(huán) 運(yùn)用實(shí)例運(yùn)用實(shí)例: 求恣意個(gè)學(xué)生的平均成果求恣意個(gè)學(xué)生的平均成果#include void main()int counter=0,total=0,score=0;float average;printf(input one score,end flag is -1n);scanf(%d,&score);whil

溫馨提示

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