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

下載本文檔

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

文檔簡介

1、本章內(nèi)容本章內(nèi)容1.循環(huán)結(jié)構(gòu)概述循環(huán)結(jié)構(gòu)概述2.go to語句及用語句及用go to語句構(gòu)成的循環(huán)語句構(gòu)成的循環(huán)3.While語句的使用語句的使用4.Do While語句的使用語句的使用5.For 語句的使用語句的使用6.循環(huán)的嵌套循環(huán)的嵌套7.Break語句和語句和Continue語句的使用語句的使用8.程序舉例程序舉例概概 述述 循環(huán)結(jié)構(gòu)是程序中一種很重要的結(jié)構(gòu)。其特點(diǎn)是,在給定循環(huán)結(jié)構(gòu)是程序中一種很重要的結(jié)構(gòu)。其特點(diǎn)是,在給定條件成立時(shí),反復(fù)執(zhí)行某一程序段,直到條件不成立為止。條件成立時(shí),反復(fù)執(zhí)行某一程序段,直到條件不成立為止。 給定的條件稱為循環(huán)條件,反復(fù)執(zhí)行的程序段稱為循環(huán)體。給定的

2、條件稱為循環(huán)條件,反復(fù)執(zhí)行的程序段稱為循環(huán)體。 語言提供多種循環(huán)語句,組成各種不同形式的循環(huán)結(jié)構(gòu)。語言提供多種循環(huán)語句,組成各種不同形式的循環(huán)結(jié)構(gòu)。 (1)用)用goto語句和語句和if語句構(gòu)成循環(huán)語句構(gòu)成循環(huán) (2)用)用while語句語句 (3)用)用do-while語句語句 (4)用)用for語句語句表達(dá)式表達(dá)式語句語句表達(dá)式表達(dá)式語句語句a) 當(dāng)型循環(huán)當(dāng)型循環(huán)b) 直到循環(huán)直到循環(huán)YNNY循環(huán)結(jié)構(gòu)類型循環(huán)結(jié)構(gòu)類型無條件轉(zhuǎn)移語句無條件轉(zhuǎn)移語句goto語句語句 一般格式:一般格式: goto 語句標(biāo)號(hào);語句標(biāo)號(hào); 語句標(biāo)號(hào)是按標(biāo)識(shí)符規(guī)定書寫的符號(hào),放在某一語句行的語句標(biāo)號(hào)是按標(biāo)識(shí)符規(guī)定書寫

3、的符號(hào),放在某一語句行的前面,標(biāo)號(hào)后加冒號(hào)前面,標(biāo)號(hào)后加冒號(hào)(:)。 語句標(biāo)號(hào)起標(biāo)識(shí)語句的作用,與語句標(biāo)號(hào)起標(biāo)識(shí)語句的作用,與goto 語句配合使用。語句配合使用。 goto語句及用語句及用goto語句構(gòu)成的循環(huán)語句構(gòu)成的循環(huán) 語言不限制程序中使用標(biāo)號(hào)的次數(shù),但各標(biāo)號(hào)不得重名。語言不限制程序中使用標(biāo)號(hào)的次數(shù),但各標(biāo)號(hào)不得重名。 goto語句的語義是改變程序流向,轉(zhuǎn)去執(zhí)行語句標(biāo)號(hào)所標(biāo)識(shí)語句的語義是改變程序流向,轉(zhuǎn)去執(zhí)行語句標(biāo)號(hào)所標(biāo)識(shí)的語句。的語句。 如:如: label1: i+; goto label1; 用用goto語句與語句與if語句實(shí)現(xiàn)循環(huán)語句實(shí)現(xiàn)循環(huán)形式形式1:loop1: 語句;語句

4、; if (表達(dá)式)(表達(dá)式) goto loop1;形式形式2:loop1: if (表達(dá)式)(表達(dá)式) goto loop2; 語句;語句; goto loop1;loop2 :注意:在結(jié)構(gòu)化程序設(shè)計(jì)中一般不主張使用注意:在結(jié)構(gòu)化程序設(shè)計(jì)中一般不主張使用goto語句,語句, 以以免造成程序流程的混亂,使理解和調(diào)試程序都產(chǎn)生困難。免造成程序流程的混亂,使理解和調(diào)試程序都產(chǎn)生困難。例例1: 編程序求:編程序求:s=1+2+3+100main() int s=0,n=1; loop: s=s+n; n+; if (n100) goto loop2; s=s+n; n+; goto loop1;

5、loop2: printf(S=%d,s); #includestdio.h void main() int n=0; printf(input a stringn); loop: if(getchar()!=n) n+; goto loop; printf(%d,n); 例例2:統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。:統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。while 語句語句執(zhí)行過程執(zhí)行過程是:計(jì)算表達(dá)式的值,當(dāng)值為真是:計(jì)算表達(dá)式的值,當(dāng)值為真(非非0)時(shí),時(shí), 執(zhí)執(zhí)行循環(huán)體語句。如右上圖。行循環(huán)體語句。如右上圖。 while語句的一般形式為:語句的一般形式為: while(表達(dá)式表達(dá)式) 語句;語句;

6、其中表達(dá)式是循環(huán)條件,語句為循其中表達(dá)式是循環(huán)條件,語句為循環(huán)體,若是多個(gè)語句則必須用環(huán)體,若是多個(gè)語句則必須用 組成組成復(fù)合語句。復(fù)合語句。表達(dá)式語句YN例例1: 編程序求:編程序求:s=1+2+3+100void main() int s=0,n=1; while (n=100) s=s+n; n+; printf(S=%d,s); do-while語句的一般形式為:語句的一般形式為: do 語句;語句; while (表達(dá)式表達(dá)式); 其中:語句是循環(huán)體,其中:語句是循環(huán)體, 表達(dá)式是循環(huán)條件。表達(dá)式是循環(huán)條件。 表達(dá)式語句NY 執(zhí)行過程是:先執(zhí)行循環(huán)體語句一次,執(zhí)行過程是:先執(zhí)行循環(huán)體

7、語句一次, 再判別表達(dá)再判別表達(dá)式的值,若為真式的值,若為真(非非0)則繼續(xù)循環(huán),否則終止循環(huán)。則繼續(xù)循環(huán),否則終止循環(huán)。Dowhile語句語句例例1: 編程序求:編程序求:s=1+2+3+100void main() int s=0,n=1; do s=s+n; n+; while (n=100); printf(“s=%d,s); void main() int s=0,n=1; while (n=100) s=s+n; n+; printf(S=%d,s); 1.在在if語句、語句、while語句中,表達(dá)式后面都不能加分號(hào),而在語句中,表達(dá)式后面都不能加分號(hào),而在 do-while語句的

8、表達(dá)式后面則必須加分號(hào)。語句的表達(dá)式后面則必須加分號(hào)。2.do-while語句也可以組成多重循環(huán),而且也可以和語句也可以組成多重循環(huán),而且也可以和while語語句相互嵌套。句相互嵌套。3.當(dāng)循環(huán)體由多個(gè)語句組成時(shí),也必須用當(dāng)循環(huán)體由多個(gè)語句組成時(shí),也必須用 括起來組成一括起來組成一個(gè)復(fù)合語句。個(gè)復(fù)合語句。4.如果循環(huán)至少要執(zhí)行一次,如果循環(huán)至少要執(zhí)行一次, while和和do-while語句可以相語句可以相互替換?;ヌ鎿Q。使用使用while和和do-while語句應(yīng)注意以下幾點(diǎn):語句應(yīng)注意以下幾點(diǎn):for語句語句 for語句是語言所提供的功能更強(qiáng),使用更廣泛的一種語句是語言所提供的功能更強(qiáng),使

9、用更廣泛的一種循環(huán)語句。循環(huán)語句。使用一般形式為:使用一般形式為: for (表達(dá)式表達(dá)式1;表達(dá)式;表達(dá)式2;表達(dá);表達(dá)3) 語句;語句; 表達(dá)式表達(dá)式1通常用來給循環(huán)變量賦初值,一般是賦值表達(dá)式。通常用來給循環(huán)變量賦初值,一般是賦值表達(dá)式。也允許在也允許在for語句外給循環(huán)變量賦初值,此時(shí)可以省略該表達(dá)語句外給循環(huán)變量賦初值,此時(shí)可以省略該表達(dá)式。式。 表達(dá)式表達(dá)式2通常是循環(huán)條件,一般為關(guān)系或邏輯表達(dá)式。通常是循環(huán)條件,一般為關(guān)系或邏輯表達(dá)式。 表達(dá)式表達(dá)式3通常可用來修改循環(huán)變量的值,一般是賦值語句。通??捎脕硇薷难h(huán)變量的值,一般是賦值語句。 1.首先計(jì)算表達(dá)式首先計(jì)算表達(dá)式1的值。

10、的值。 2.再計(jì)算表達(dá)式再計(jì)算表達(dá)式2的值,若值為的值,若值為真真(非非0)則執(zhí)行循環(huán)體一次,否則跳則執(zhí)行循環(huán)體一次,否則跳出循環(huán)。出循環(huán)。 3.然后再計(jì)算表達(dá)式然后再計(jì)算表達(dá)式3的值,轉(zhuǎn)的值,轉(zhuǎn)回第回第2步重復(fù)執(zhí)行。步重復(fù)執(zhí)行。 表達(dá)式2語句YN語句求解表達(dá)式1求解表達(dá)式3for 語句的執(zhí)行過程語句的執(zhí)行過程for語句的執(zhí)行過程:語句的執(zhí)行過程: 在整個(gè)在整個(gè)for循環(huán)過程中,表達(dá)式循環(huán)過程中,表達(dá)式1只計(jì)算一次,表達(dá)式只計(jì)算一次,表達(dá)式2和表達(dá)式和表達(dá)式3則可能計(jì)算多次。循環(huán)體可能多則可能計(jì)算多次。循環(huán)體可能多次執(zhí)行,也可能一次都不執(zhí)行。次執(zhí)行,也可能一次都不執(zhí)行。 main() int

11、n,s=0; for(n=1;n=100;n+) s=s+n; printf(s=%dn,s); 本例本例for語句中的表達(dá)式語句中的表達(dá)式3為為n+,實(shí)際上也是一種賦值,實(shí)際上也是一種賦值語句,相語句,相當(dāng)于當(dāng)于n=n+1,以改變循環(huán)變量的值。,以改變循環(huán)變量的值。例:用例:用for語句計(jì)算語句計(jì)算s=1+2+3+.+99+1001.for語句中的各表達(dá)式都可省略,但分號(hào)間隔符不能少。語句中的各表達(dá)式都可省略,但分號(hào)間隔符不能少。 如:如:for(;表達(dá)式;表達(dá)式2;表達(dá)式;表達(dá)式3) 省去了表達(dá)式省去了表達(dá)式1。 for(表達(dá)式表達(dá)式1;表達(dá)式;表達(dá)式3) 省去了表達(dá)式省去了表達(dá)式2。 f

12、or(表達(dá)式表達(dá)式1;表達(dá)式;表達(dá)式2;) 省去了表達(dá)式省去了表達(dá)式3。 for(;) 省去了全部表達(dá)式。省去了全部表達(dá)式。2.在循環(huán)變量已賦初值時(shí),可省去表達(dá)式在循環(huán)變量已賦初值時(shí),可省去表達(dá)式1。3.省去表達(dá)式省去表達(dá)式2或表達(dá)式或表達(dá)式3則相當(dāng)于則相當(dāng)于while語句語句,并且造成無限并且造成無限循環(huán),這時(shí)應(yīng)在循環(huán)體內(nèi)設(shè)法結(jié)束循環(huán)。循環(huán),這時(shí)應(yīng)在循環(huán)體內(nèi)設(shè)法結(jié)束循環(huán)。在使用在使用for語句中要注意以下幾點(diǎn):語句中要注意以下幾點(diǎn):main() int n=1,s=0; for(;n=100;n+) s=s+n; printf(s=%dn,s); main() int n=1,s=0; fo

13、r(;n100) break; printf(s=%dn,s); for( ; ; )等效于等效于while( 1) 4. for語句中的三個(gè)表達(dá)式都可以是逗號(hào)表達(dá)式,即每個(gè)表語句中的三個(gè)表達(dá)式都可以是逗號(hào)表達(dá)式,即每個(gè)表達(dá)式都可由多個(gè)達(dá)式都可由多個(gè)表達(dá)式組成。表達(dá)式組成。main() int n,s; for(n=1,s=0;n=100;n+) s=s+n; printf(s=%dn,s); main() int n,s; for(n=1,s=0;n=100; s+=n, n+); printf(s=%dn,s); 這里為什么要加;這里為什么要加; #includestdio.h void

14、main() int n=0; printf(input a string:n); for(;getchar()!=n;n+) ; printf(%d,n); 例:統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。例:統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。getchargetchar()()是使用輸入緩沖區(qū)的(按了回車之后才會(huì)真正是使用輸入緩沖區(qū)的(按了回車之后才會(huì)真正輸入),可以用輸入),可以用getchegetche()()函數(shù),這個(gè)函數(shù)不使用緩沖區(qū),函數(shù),這個(gè)函數(shù)不使用緩沖區(qū),直接輸入直接處理直接輸入直接處理, ,需要的頭文件是需要的頭文件是“conio.hconio.h”。 本例中,省去了本例中,省去了for語句

15、的表達(dá)式語句的表達(dá)式1,表達(dá)式,表達(dá)式3也不是用來修也不是用來修改循環(huán)變量,而是用作輸入字符的計(jì)數(shù)。這樣就把本應(yīng)在循改循環(huán)變量,而是用作輸入字符的計(jì)數(shù)。這樣就把本應(yīng)在循環(huán)體中完成的計(jì)數(shù)放在表達(dá)式中完成了。因此循環(huán)體是空語環(huán)體中完成的計(jì)數(shù)放在表達(dá)式中完成了。因此循環(huán)體是空語句。句。 注意的是,空語句后的分號(hào)不可少,如缺少此分號(hào),則把注意的是,空語句后的分號(hào)不可少,如缺少此分號(hào),則把后面的后面的printf 語句當(dāng)成循環(huán)體來執(zhí)行。反過來說,如循環(huán)體語句當(dāng)成循環(huán)體來執(zhí)行。反過來說,如循環(huán)體不為空語句時(shí),不為空語句時(shí), 決不能在表達(dá)式的括號(hào)后加分號(hào),決不能在表達(dá)式的括號(hào)后加分號(hào), 這樣又這樣又會(huì)認(rèn)為循

16、環(huán)體是空語句而不能執(zhí)行循環(huán)體。會(huì)認(rèn)為循環(huán)體是空語句而不能執(zhí)行循環(huán)體。 說說 明:明:循環(huán)的嵌套循環(huán)的嵌套 for語句也可與語句也可與while,do-while語句相互嵌套,構(gòu)成多重循語句相互嵌套,構(gòu)成多重循環(huán)。以下形式都合法的嵌套。環(huán)。以下形式都合法的嵌套。(4) while( ) for( ) (1) while( ) while( ) (2) do do while( ) while();(3) for( ) for( ) (7) while( ) do while( ); (5) for( ) while( ) (6) dofor( ) while( );(8) for( ) do w

17、hile( ); 例:打印如下形式的九九乘法表例:打印如下形式的九九乘法表void main() int x,y; for(x=1;x=9;x+) for(y=1;y=9;y+) printf(%d*%d=%2d ,x,y,x*y); printf(n); break語句和語句和continue語句語句break語句語句 break語句只能用在語句只能用在switch 語句或循環(huán)語句中,其作用語句或循環(huán)語句中,其作用是跳出是跳出switch語句或跳出本層循環(huán),轉(zhuǎn)去執(zhí)行后面的程序。語句或跳出本層循環(huán),轉(zhuǎn)去執(zhí)行后面的程序。 break語句的一般形式為:語句的一般形式為: break; break語

18、句用于循環(huán)體中,一般與語句用于循環(huán)體中,一般與 if 語句聯(lián)合使用。語句聯(lián)合使用。#includestdio.hvoid main() char a,b; printf(input a string:n); b=getchar(); while(a=getchar()!=n) if(a=b) printf(same charactern); break; b=a; 功能是:功能是: 檢查輸入的一行中有無相鄰兩字符相同。檢查輸入的一行中有無相鄰兩字符相同。分析下面程序的功能分析下面程序的功能main() int n; for(n=7;n=100;n+) if (n%7!=0) continue;

19、 printf(%d ,n); main() int n; for(n=7;n=100;n+) if (n%7=0) printf(%d ,n); continue語句只能用在循環(huán)體中,其一般格式是:語句只能用在循環(huán)體中,其一般格式是: continue; 其語義是:結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中其語義是:結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue 語句之后的語句,轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行。語句之后的語句,轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行。 注意:本語句只結(jié)束本層本次的循環(huán),并不跳出循環(huán)。注意:本語句只結(jié)束本層本次的循環(huán),并不跳出循環(huán)。continue語句語句程序舉例程序舉例例例6

20、.6 利用公式利用公式 /4 1-1/3+1/5-1/7+求求,直到最后一,直到最后一項(xiàng)小于項(xiàng)小于1E-6。#include void main() int s; float n,t,pi; t=1 ; pi=0 ; n=1.0 ; s=1; while (fabs(t)1e-6) pi=pi+t; n=n+2; s= -s; t=s/n; pi=pi*4; printf(pi=%10.6fn,pi); #include math.hvoid main() int m,i,k; printf(Enter m=n); scanf(%d,&m); k=sqrt(m); for(i=2;ik

21、) printf(Yesn); else printf(Non); 輸入輸入m當(dāng)當(dāng)ikYN打印打印Yesbreak打印打印No程序流程圖程序流程圖算法:算法: 判斷一個(gè)整數(shù)判斷一個(gè)整數(shù)m是否是素?cái)?shù)。是否是素?cái)?shù)。#include math.hvoid main() int n=0,i,k,m; for (m=101;m=199;m+) k=sqrt(m); for(i=2;ik) n+; printf(%d ,m); if (n% 10=0) printf(n); 例例6.9 打印打印輸出輸出100200之間之間的素?cái)?shù)。的素?cái)?shù)。算法:算法: 字符的加密、解密字符的加密、解密加密的思想是:加密的思

22、想是: 將每個(gè)字母將每個(gè)字母C C加(或減)一序數(shù)加(或減)一序數(shù)k k,即用它后的第,即用它后的第k k個(gè)字母個(gè)字母代替,變換式公式:代替,變換式公式: c=c+kc=c+k 例如序數(shù)例如序數(shù)k k為為5 5,這時(shí),這時(shí) “ “A”A”“F”“F”, “ “a”a”“f”“f”,“B”B”“G”“G” 當(dāng)加序數(shù)后的字母超過當(dāng)加序數(shù)后的字母超過“Z”Z”或或“z”z”則則 c=c+k -26c=c+k -26 例如:例如:You are good You are good Dtz fwj ltti Dtz fwj ltti 解密為加密的逆過程解密為加密的逆過程 將每個(gè)字母將每個(gè)字母C C減(或

23、加)一序數(shù)減(或加)一序數(shù)k k,即,即 c=c-k,c=c-k, 例如序數(shù)例如序數(shù)k k為為5 5,這時(shí),這時(shí) “ “Z”Z”“U”“U”, “ “z”z”“u”“u”,“Y”Y”“T”“T” 當(dāng)加序數(shù)后的字母小于當(dāng)加序數(shù)后的字母小于“A”A”或或“a”a”則則 c=c-k +26c=c-k +26#include stdio.hmain() char c; while(c=getchar()!=n) if(c=a & c=A & cZ & cz) c=c-26; printf(%c,c); 加密程序如下:加密程序如下:#include stdio.hmain() char c; while(c=getchar()!=n) if(c=a & c=A & c=Z) c=c-4; if (cA | c=a-4) c=

溫馨提示

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

最新文檔

評論

0/150

提交評論