[高等教育]C語言第5章 循環(huán)結(jié)構(gòu)設(shè)計ppt課件_第1頁
[高等教育]C語言第5章 循環(huán)結(jié)構(gòu)設(shè)計ppt課件_第2頁
[高等教育]C語言第5章 循環(huán)結(jié)構(gòu)設(shè)計ppt課件_第3頁
[高等教育]C語言第5章 循環(huán)結(jié)構(gòu)設(shè)計ppt課件_第4頁
[高等教育]C語言第5章 循環(huán)結(jié)構(gòu)設(shè)計ppt課件_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第5章 循環(huán)構(gòu)造程序設(shè)計一本章主要內(nèi)容本章主要內(nèi)容本節(jié)課主要內(nèi)容本節(jié)課主要內(nèi)容循環(huán)構(gòu)造循環(huán)構(gòu)造構(gòu)造化程序設(shè)計的根本構(gòu)構(gòu)造化程序設(shè)計的根本構(gòu)造之一造之一l順序構(gòu)造順序構(gòu)造l選擇構(gòu)造選擇構(gòu)造l循環(huán)構(gòu)造:為處理某一問題,或求取某一計算結(jié)果,循環(huán)構(gòu)造:為處理某一問題,或求取某一計算結(jié)果,l 特定的條件下,程序中反復(fù)地按某一方式進展操特定的條件下,程序中反復(fù)地按某一方式進展操作。作。l無休止循環(huán)無休止循環(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、是本章是全書的全書的重點和難點!重點和難點!while while 語句語句表達 式語句(循 環(huán)體)00循環(huán)條件:決循環(huán)條件:決議能否執(zhí)行循議能否執(zhí)行循環(huán)體,表達式環(huán)體,表達式值為值為“真真那那么執(zhí)行循環(huán)體么執(zhí)行循環(huán)體循環(huán)體:反復(fù)循環(huán)體:反復(fù)執(zhí)行的操作直執(zhí)行的操作直至表達式的值至表達式的值為為false【例【例5.1】求】求 i=100sumsum+iii+1假真sum=0i=1輸 出結(jié) 果sum1001ii例例5.1 編碼實現(xiàn)編碼實現(xiàn)“i1可否可否換成:換成:“i0“i=100可可否換成:否換成:“i100“i+沒有會沒有會怎樣怎樣i、sum不賦不賦初值會怎樣初值會怎樣 可以寫成:可以寫成:

3、 sum + = i ; i + + ; 或:或: sum + = i + + ;假設(shè)寫成:假設(shè)寫成: sum + = + + i ; 會有什么問題?會有什么問題? 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 計數(shù)計數(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當i=npp*2ii+1計數(shù)器計數(shù)器賦初值賦初值循環(huán)條件循環(huán)條件終了條件終了條件改動循環(huán)改動循環(huá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當i=np=p*mi=i+1輸出p循環(huán)三要素循環(huán)三要素l規(guī)律規(guī)律-循環(huán)體的算法循環(huán)體的算法l臨界點臨界點-循環(huán)的條件,循環(huán)終了的條件循環(huán)的條件,循環(huán)終了的條件l循環(huán)條件的改動循環(huán)條件的改動-如何改動使循環(huán)趨于終了如何改動使循環(huán)趨于終了容易出錯的地方容易出錯的地方l變量運算前沒有賦初值變量運算前沒有賦初值l臨界點運用臨界點運用 = = =出現(xiàn)錯誤出現(xiàn)錯誤l條件判別永真,出現(xiàn)死循環(huán)條件判別永真,出現(xiàn)死循環(huán)dodowhile while 語句語句=普通方式:普通方式:= do = 循環(huán)體語句循環(huán)體語句= while 表達式;表達式;=特點:特點:=先執(zhí)行一次先執(zhí)行一次指定的循環(huán)內(nèi)嵌語句,指

6、定的循環(huán)內(nèi)嵌語句,然后判別條件表達式。然后判別條件表達式。語句表達 式00圖圖6_4表達式表達式循環(huán)體循環(huán)體do_while 表達式表達式循環(huán)體循環(huán)體whiledo while 至少執(zhí)行一次循環(huán)體內(nèi)的語句至少執(zhí)行一次循環(huán)體內(nèi)的語句! 【例【例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);將鍵盤輸入字符中一切大寫字母轉(zhuǎn)換將鍵盤輸入字符中一切大寫字母轉(zhuǎn)換為小寫字母,其他字符不變。為小寫字母,其他字符不變。問題:試著改為while循環(huán)構(gòu)造。運轉(zhuǎn)情況:運轉(zhuǎn)情況:COMPUTERCOMPUTER ( (輸入輸入) )computer (computer (輸出輸出) )而不是而不是CcOoMmPpUuTtEeRrCcOoMmPpUuTtEeRr課堂練習(xí)課堂練習(xí) 輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其它字符的個數(shù)。【例【例5.65.6】 用用/41-1/3+1/5-1/7+/41-1/3+

8、1/5-1/7+公式求公式求的近似的近似值,直到某一項的絕對值小于值,直到某一項的絕對值小于1e-61e-6為止。為止。思緒:思緒: 用循環(huán)對各項值迭加,直至被加項用循環(huán)對各項值迭加,直至被加項 10-6 循環(huán)終止條件:循環(huán)終止條件: | x | 10-6 循環(huán)體算法:循環(huán)體算法: 累加當前項;累加當前項; 求下一項值;求下一項值; 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 ; / 累加當前項累加當前項/ 后項分母后項分母/ 變號變號/ 求后項求后項/ 求求 例例5.6 運用級數(shù)求運用級數(shù)求的近似值的近似值121) 1(.715131141nn思緒一:設(shè)第思緒一:設(shè)第 k 項項 Xk = 1 / k 第第 k + 1項項 Xk+1 = (-1) / ( k + 2 ) 運轉(zhuǎn)結(jié)果:運轉(zhuǎn)結(jié)果: pi= 3.141594 pi= 3.141594While語句實現(xiàn)語句實現(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 運用級數(shù)求運用級數(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思緒二:直接用通項描畫迭加思緒二:直接用通項描畫

11、迭加/ 累加當前項累加當前項/ 后項分母后項分母/ 變號變號/ 求后項求后項/ 精度判別精度判別例例5.6 運用級數(shù)求運用級數(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語句和用語句和用do-whiledo-while語句處置同語句處置同一問題時,假設(shè)二者的循環(huán)體部分是一樣的,它們的結(jié)一問題時,

12、假設(shè)二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣。但是假設(shè)果也一樣。但是假設(shè)whilewhile后面的表達式一開場就為假后面的表達式一開場就為假(0(0值值) )時,兩種循環(huán)的結(jié)果是不同的。時,兩種循環(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); 運轉(zhuǎn)結(jié)果:運轉(zhuǎn)結(jié)果:11 sum=55 sum=55 再運轉(zhuǎn)一次:再運轉(zhuǎn)一次: 11 11sum=0sum=0運轉(zhuǎn)結(jié)果:運轉(zhuǎn)結(jié)果:11 sum=55 sum=55 再運轉(zhuǎn)一次:再運轉(zhuǎn)一次: 11 11sum=11sum=11控制循環(huán)的方法控制循環(huán)的方法l計數(shù)器控制循環(huán)計數(shù)器控制循環(huán)l標志控制循環(huán)標志控制循環(huán)l計數(shù)器控制循環(huán)計數(shù)器控制循環(huán) 常用一個計數(shù)器變量常用一個計數(shù)器變量(counter)統(tǒng)計循環(huán)執(zhí)行的次數(shù),統(tǒng)計循環(huán)執(zhí)行的次數(shù),在循環(huán)執(zhí)行前將其賦予特定的值,并在循環(huán)體執(zhí)行的過程在循環(huán)執(zhí)行前將其賦予特定的值,并在循環(huán)體

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

15、用一個特殊值作為標志值,表示數(shù)據(jù)輸入終了。例:用用一個特殊值作為標志值,表示數(shù)據(jù)輸入終了。例:用戶輸入一個標志值,表示最后一個成果曾經(jīng)輸入。戶輸入一個標志值,表示最后一個成果曾經(jīng)輸入。標志值不能與可接受的輸入值混淆起來。標志值不能與可接受的輸入值混淆起來。運用實例:開發(fā)一個計算全班平均成果的程序,運用實例:開發(fā)一個計算全班平均成果的程序,在每次程序運轉(zhuǎn)時處置恣意個成果數(shù)。在每次程序運轉(zhuǎn)時處置恣意個成果數(shù)。 l標志控制循環(huán)標志控制循環(huán) 運用實例運用實例: 求求10個學(xué)生的平均成果個學(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);計數(shù)器控制循環(huán)計數(shù)器控制循環(huán) 運用實例運用實例: 求恣意個學(xué)生的平均成果求恣意個學(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論