C語言程序設計:第5章 循環(huán)結構程序設計_第1頁
C語言程序設計:第5章 循環(huán)結構程序設計_第2頁
C語言程序設計:第5章 循環(huán)結構程序設計_第3頁
C語言程序設計:第5章 循環(huán)結構程序設計_第4頁
C語言程序設計:第5章 循環(huán)結構程序設計_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第5章 循環(huán)結構程序設計循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University2主要內容qwhile語句語句qdo while語句語句qfor 語句語句q循環(huán)的嵌套循環(huán)的嵌套qbreak語句和語句和continue語句語句q程序舉例程序舉例循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University3while語句qWhile語句語句格式:格式:while (表達式表達式) 語句語句語句

2、:一般語句語句:一般語句 復合語句復合語句while語句的執(zhí)行過程:語句的執(zhí)行過程:循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University4例 6.2例:例: 求求n。#include void main( ) int i,sum=0; i=1; while (i = 100) sum=sum+i; i+; printf(%d,sum);100n=1循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow

3、 University5while語句說明q循環(huán)體如果包含一個以上的語句,應該用循環(huán)體如果包含一個以上的語句,應該用花括弧括起來,以復合語句形式出現?;ɡɑ±ㄆ饋?,以復合語句形式出現。q在循環(huán)體中在循環(huán)體中應有使循環(huán)趨向于結束的語句,應有使循環(huán)趨向于結束的語句,否則程序就無法跳出循環(huán)否則程序就無法跳出循環(huán),從而形成死循,從而形成死循環(huán)。環(huán)。循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University6do while語句qdo while語句語句格式格式do 循環(huán)體語句循環(huán)體語句while (

4、表達式表達式);執(zhí)行過程執(zhí)行過程特點特點: q先執(zhí)行循環(huán)體,然先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是后判斷循環(huán)條件是否成立。否成立。循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University7例 6.3例:例: 用用dowhile語句求語句求n。100n=1循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University8例 6.3(續(xù))程序如下:程序如下:#include void main( )

5、int i,sum=0; i=1; do sum = sum + i; i+; while(i = 100); printf(%d,sum);循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University9while和do-while語句的比較q在一般情況下,用在一般情況下,用while語句和用語句和用do-while語句處理同一問題時,若二者的循環(huán)體部語句處理同一問題時,若二者的循環(huán)體部分是一樣的,它們的結果也一樣分是一樣的,它們的結果也一樣q如果如果while后面的表達式一開始就為假后面的表

6、達式一開始就為假(0值值)時,兩種循環(huán)的結果是不同的時,兩種循環(huán)的結果是不同的循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University10例 6.4例例6.4 while和和do-while循環(huán)的比較。循環(huán)的比較。(1) (2) #include #include void main ( ) void main( ) int sum=0,i; int sum=0,i; scanf(“%d”,&i); scanf(%d,&i); while (i=10) do sum=sum

7、+i; sum=sum+i; i+; i+; while (i=10) printf(“sum=%d”,sum); printf(“sum=%d”,sum); 循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University11例 6.4(續(xù))運行情況如下:運行情況如下:運行情況如下:運行情況如下:(1) (2)1 1sum=55 sum=55再運行一次:再運行一次: 再運行一次:再運行一次:11 11sum=0 sum=11循環(huán)結構程序設計while和do-while循環(huán)舉例q例題例題1:從鍵盤

8、輸入一個以從鍵盤輸入一個以“#”結束的字符串,要求將結束的字符串,要求將該字符中的所有小寫字母轉換成大寫字母,大該字符中的所有小寫字母轉換成大寫字母,大寫字母轉換成小寫字母,非字母字符不做處理。寫字母轉換成小寫字母,非字母字符不做處理。2021-11-15School of Computer Science & Technology; Soochow University12循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University13for 語 句qfor 語句語句格式格式for(

9、exp1;exp2;exp3) 語句語句執(zhí)行過程執(zhí)行過程循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University14for語句的一般應用形式q for語句的一般應用形式語句的一般應用形式 for(循環(huán)變量賦初值循環(huán)變量賦初值;循環(huán)條件循環(huán)條件;循環(huán)變量增值循環(huán)變量增值) 語句語句 循環(huán)變量賦初始值;循環(huán)變量賦初始值;While (循環(huán)條件循環(huán)條件) 語句;語句; 循環(huán)變量增值循環(huán)變量增值;q例如例如: for(i = 1; i = 100; i+) sum = sum + i;等價于:等價

10、于: i = 1; while (i = 100) sum = sum + i; i+; 循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University15for語句的重要說明q三個表達式可以是任意類型的表達式,都三個表達式可以是任意類型的表達式,都可以省略,但可以省略,但分號不能??!q無限循環(huán)結構:無限循環(huán)結構:for(;) for(;) 相當于相當于: : while(1) 語句語句qforfor循環(huán)可以轉換成循環(huán)可以轉換成whilewhile循環(huán)循環(huán)expr1;while(expr2) 循

11、環(huán)體語句; expr3;循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University16 例: #include main( ) int i=0; for(;i10;i+) putchar(a+i); 例:#include main( ) int i=0; for(;i10;) putchar(a+(i+); 例:#include main( ) int i=0; for(i=0;i10;i+) putchar(a+i); 例:#include main( ) int i=0; for(;i1

12、0;putchar(a+i),i+) ; 運行結果:abcdefghijfor語句的使用形式循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University17四種循環(huán)小結q四種循環(huán)的比較四種循環(huán)的比較四種循環(huán)可以完成相同的功能,但一般不提倡使用四種循環(huán)可以完成相同的功能,但一般不提倡使用gotogoto型循環(huán)型循環(huán)while 和和 for循環(huán)先判斷條件,后執(zhí)行語句;如果條件循環(huán)先判斷條件,后執(zhí)行語句;如果條件第一次就不成立,則語句一次都不執(zhí)行;第一次就不成立,則語句一次都不執(zhí)行;而而dodo循環(huán)

13、先執(zhí)行語句,后判斷條件,因此條件首次就循環(huán)先執(zhí)行語句,后判斷條件,因此條件首次就不成立,語句也被執(zhí)行了一次不成立,語句也被執(zhí)行了一次whilewhile、do-whiledo-while、forfor循環(huán)可以使用循環(huán)可以使用breakbreak和和continuecontinue語句,語句,gotogoto循環(huán)不能使用。循環(huán)不能使用。q循環(huán)的構成循環(huán)的構成完整的循環(huán)包括:完整的循環(huán)包括:q初始化初始化: :只在循環(huán)開始時執(zhí)行一次只在循環(huán)開始時執(zhí)行一次q循環(huán)條件循環(huán)條件: :條件成立,則繼續(xù)執(zhí)行;否則將退出循環(huán)條件成立,則繼續(xù)執(zhí)行;否則將退出循環(huán)q循環(huán)體循環(huán)體: :包含循環(huán)執(zhí)行的動作和循環(huán)控制變

14、量的修改包含循環(huán)執(zhí)行的動作和循環(huán)控制變量的修改循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University18程序分析q分析下面程序是否是死循環(huán),并給出結構分析下面程序是否是死循環(huán),并給出結構#include int main()short int a = -2, b = 1;do b+;a-; while(b0);printf(a=%d; b=%dn,a,b);return 0;死循環(huán)嗎?死循環(huán)嗎?輸出結果:輸出結果: a=32767; b=-32768循環(huán)結構程序設計2021-11-15S

15、chool of Computer Science & Technology; Soochow University19break語句和continue語句qbreak語句語句格式:格式: break;break;break語句的兩個作用語句的兩個作用qbreak語句可以使流程跳出語句可以使流程跳出switch結構,繼續(xù)執(zhí)行結構,繼續(xù)執(zhí)行switch語句語句下面的一個語句下面的一個語句qbreak語句還可以用來從循環(huán)體內跳出循環(huán)體,即提前結束循語句還可以用來從循環(huán)體內跳出循環(huán)體,即提前結束循環(huán),接著執(zhí)行循環(huán)下面的語句環(huán),接著執(zhí)行循環(huán)下面的語句for(r = 1; r 100) brea

16、k; printf(%f,area);!注意:!注意:break語句不能用語句不能用于于循環(huán)語句和循環(huán)語句和switch語句語句之外的之外的任何其他語句中任何其他語句中循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University20break語句和continue語句qcontinue語句語句格式:格式: continue;continue語句的作用:語句的作用:q結束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接結束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進行下一次是否執(zhí)行循環(huán)的判定

17、著進行下一次是否執(zhí)行循環(huán)的判定qcontinue語句和語句和break語句的區(qū)別語句的區(qū)別continue語句只結束本次循環(huán),而不是終止整個語句只結束本次循環(huán),而不是終止整個循環(huán)的執(zhí)行。循環(huán)的執(zhí)行。break語句則是結束整個循環(huán)過程,不再判斷執(zhí)行語句則是結束整個循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立循環(huán)的條件是否成立循環(huán)結構程序設計 例例5.7用用 公式求公式求 的近似的近似值,直到發(fā)現某一項的絕對值小于值,直到發(fā)現某一項的絕對值小于10-6 為為止止(該項不累計加該項不累計加)。715131142021-11-1521School of Computer Science & Tec

18、hnology; Soochow University循環(huán)結構程序設計q解題思路:解題思路:求求 近似近似值的值的方法方法很多,本題是很多,本題是一種一種其他方法:其他方法:2222213121116n722)2() 1(75665344312222nnn2021-11-1522School of Computer Science & Technology; Soochow University循環(huán)結構程序設計q每項的分子都是每項的分子都是1q后一項的分母是前一項的分母加后一項的分母是前一項的分母加2q第第1項的符號為正,從第項的符號為正,從第2項起,每一項的符項起,每一項的符號與前一

19、項的符號相反號與前一項的符號相反71513114n121n2021-11-1523School of Computer Science & Technology; Soochow University循環(huán)結構程序設計sign=1,pi=0,n=1,term=1當當term 10-6pi=pi+termn=n+1sing=-signterm=sign/npi=pi*4輸出輸出pi2021-11-1524School of Computer Science & Technology; Soochow University循環(huán)結構程序設計#include #include int m

20、ain() int sign=1; double pi=0,n=1,term=1; while(fabs(term)=1e-6) pi=pi+term; n=n+2; sign=-sign; term=sign/n; pi=pi*4; printf(pi=%10.8fn,pi); return 0;求絕對值的函數求絕對值的函數只保證前只保證前5位小數是準確的位小數是準確的2021-11-1525School of Computer Science & Technology; Soochow University循環(huán)結構程序設計#include #include int main() i

21、nt sign=1; double pi=0,n=1,term=1; while(fabs(term)=1e-6) pi=pi+term; n=n+2; sign=-sign; term=sign/n; pi=pi*4; printf(pi=%10.8fn,pi); return 0;改為改為1e-82021-11-1526School of Computer Science & Technology; Soochow University循環(huán)結構程序設計 例例5.9輸入一個大于輸入一個大于3的整數的整數n,判定它是,判定它是否素數否素數(prime,又稱質數,又稱質數)。q解題思路:

22、解題思路:讓讓n被被i整整除除(i的值從的值從2變到變到n-1)如果如果n能被能被2(n-1)之中任何一個整數整除,之中任何一個整數整除,則表示則表示n肯定不是素數,不必再繼續(xù)被后面的肯定不是素數,不必再繼續(xù)被后面的整數除,因此,可以提前結束循環(huán)整數除,因此,可以提前結束循環(huán)注意:此時注意:此時i的值必然小于的值必然小于n循環(huán)結構程序設計NNYi=i+1輸入輸入ni=2i n-1Yn被被i整除整除i n輸出不是素數輸出不是素數Y輸出是素數輸出是素數n循環(huán)結構程序設計#include int main() int n,i; printf(“n=?); scanf(%d,&n); for

23、(i=2;i=n-1;i+) if(n%i=0) break; if(in) printf(%d is notn,n); else printf(%d isn,n); return 0;循環(huán)結構程序設計#include int main() int n,i; printf(“n=?); scanf(%d,&n); for (i=2;i=n-1;i+) if(n%i=0) break; if(in) printf(%d is notn,n); else printf(%d isn,n); return 0;nk=sqrt(n);循環(huán)結構程序設計#include int main() in

24、t n,i,k; printf(“n=?); scanf(%d,&n); for (i=2; i=k; i+) if(n%i=0) break; if(in) printf(%d is notn,n); else printf(%d isn,n); return 0;k=sqrt(n);#include 循環(huán)結構程序設計#include int main() int n,i,k; printf(“n=?); scanf(%d,&n); for (i=2; i=k; i+) if(n%i=0) break; if(i=k) printf(%d is notn,n); else p

25、rintf(%d isn,n); return 0;k=sqrt(n);#include 循環(huán)結構程序設計 例例5.11 譯密碼。為使電文保密,往往按一譯密碼。為使電文保密,往往按一定規(guī)律將其轉換成密碼,收報人再按約定定規(guī)律將其轉換成密碼,收報人再按約定的規(guī)律將其譯回原文。的規(guī)律將其譯回原文。A B C D E F G W X Y Zq非字母字符保持原狀不變非字母字符保持原狀不變q輸入一行字符,要求輸出其相應的密碼輸入一行字符,要求輸出其相應的密碼循環(huán)結構程序設計q解題思路:問題的關鍵有兩個:解題思路:問題的關鍵有兩個: (1) 決定哪些字符不需要改變,哪些字符需要改決定哪些字符不需要改變,哪

26、些字符需要改變,如果需要改變,應改為哪個字符變,如果需要改變,應改為哪個字符處理的方法是:輸入一個字符給字符變量處理的方法是:輸入一個字符給字符變量c,先判定它是否字母先判定它是否字母(包括大小寫包括大小寫),若不是字母,若不是字母,不改變不改變c的值;若是字母,則還要檢查它是的值;若是字母,則還要檢查它是否否W到到Z的范圍內的范圍內(包括大小寫字母包括大小寫字母)。如不在。如不在此范圍內,則使變量此范圍內,則使變量c的值改變?yōu)槠浜蟮诘闹蹈淖優(yōu)槠浜蟮?個字個字母。如果在母。如果在W到到Z的范圍內,則應將它轉換的范圍內,則應將它轉換為為AD(或或ad)之一的字母。之一的字母。c=getchar(

27、); 循環(huán)結構程序設計q解題思路:問題的關鍵有兩個:解題思路:問題的關鍵有兩個: (1) 決定哪些字符不需要改變,哪些字符需要改決定哪些字符不需要改變,哪些字符需要改變,如果需要改變,應改為哪個字符變,如果需要改變,應改為哪個字符處理的方法是:輸入一個字符給字符變量處理的方法是:輸入一個字符給字符變量c,先判定它是否字母先判定它是否字母(包括大小寫包括大小寫),若不是字母,若不是字母,不改變不改變c的值;若是字母,則還要檢查它是的值;若是字母,則還要檢查它是否否W到到Z的范圍內的范圍內(包括大小寫字母包括大小寫字母)。如不在。如不在此范圍內,則使變量此范圍內,則使變量c的值改變?yōu)槠浜蟮诘闹蹈淖?/p>

28、為其后第4個字個字母。如果在母。如果在W到到Z的范圍內,則應將它轉換的范圍內,則應將它轉換為為AD(或或ad)之一的字母。之一的字母。if(c=a & c=A & c=W & c=w & c=a & C = A & C Z & C z 假假真真輸入的不是字符,退出!輸入的不是字符,退出!輸出輸出CC -= 26 輸出輸出C循環(huán)結構程序設計char c;c=getchar(); while(c!=n) if(c=a & c=A & c=W & c=w & c=A & c=a & c=Z &am

29、p; cz) c=c-26; printf(%c,c); 不能少不能少循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University41q補充例題補充例題1: 輸入兩個正整數輸入兩個正整數m和和n,求其最大公約數和最小,求其最大公約數和最小公倍數公倍數算法思想:算法思想:q輾轉相除法,假設輾轉相除法,假設n比比m大,當大,當n%m的值為的值為0,則,則n就是就是n和和m的最大公約數;否則,將的最大公約數;否則,將m賦給賦給n,n%m賦給賦給m,繼續(xù)判斷,繼續(xù)判斷n%m的值是否為的值是否為0.q最

30、小公倍數等于最小公倍數等于n*m/(n和和m的最大公約數的最大公約數)循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University42最大公約數與最小公倍數問題開始開始輸入輸入n,mnmtemp=n;n=m;m=temp;m=0temp=n%m;n=m;m=temp;最大公約數:最大公約數:n最小公倍數最小公倍數: p/n結束結束p=n*mYNYN循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University43q補充例題補充例題2:求求f1=1+2+3+100和和f2=1*2*3*10的結果的結果定義sum=0, i=1i=100sum += i; i+輸出sum循環(huán)結構程序設計2021-11-15School of Computer Science & Technology; Soochow University44補充例題2/*求f1=1+2+100*/#include #define N 100void main() int i,f1=0; for (i=1; i=N; i+)f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論