第05章循環(huán)控制結(jié)構(gòu)_第1頁(yè)
第05章循環(huán)控制結(jié)構(gòu)_第2頁(yè)
第05章循環(huán)控制結(jié)構(gòu)_第3頁(yè)
第05章循環(huán)控制結(jié)構(gòu)_第4頁(yè)
第05章循環(huán)控制結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩38頁(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、第6章 循環(huán)控制結(jié)構(gòu) 1本章要求:本章要求:v 掌握循環(huán)控制語(yǔ)句掌握循環(huán)控制語(yǔ)句forfor語(yǔ)句、語(yǔ)句、whilewhile語(yǔ)句、語(yǔ)句、dodowhilewhile語(yǔ)句以及他們的嵌套應(yīng)用語(yǔ)句以及他們的嵌套應(yīng)用;v 掌握掌握breakbreak語(yǔ)句、語(yǔ)句、continuecontinue語(yǔ)句的應(yīng)用語(yǔ)句的應(yīng)用;v 熟練掌握計(jì)數(shù)、累加、累乘等簡(jiǎn)單算法熟練掌握計(jì)數(shù)、累加、累乘等簡(jiǎn)單算法v 熟練掌握窮舉法、迭代法熟練掌握窮舉法、迭代法第第6章章 循環(huán)控制循環(huán)控制第6章 循環(huán)控制結(jié)構(gòu) 2循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)的特點(diǎn):的特點(diǎn): 在給定條件成立時(shí),反復(fù)執(zhí)行某程序段,在給定條件成立時(shí),反復(fù)執(zhí)行某程序段, 直到條件不成

2、立為止。直到條件不成立為止。注意兩個(gè)概念:注意兩個(gè)概念: 1 1、給定的條件稱(chēng)為、給定的條件稱(chēng)為循環(huán)條件循環(huán)條件 2 2、反復(fù)執(zhí)行的程序段稱(chēng)為、反復(fù)執(zhí)行的程序段稱(chēng)為循環(huán)體循環(huán)體在在C C語(yǔ)言中,實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語(yǔ)句主要有語(yǔ)言中,實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語(yǔ)句主要有3 3種:種: forfor語(yǔ)句語(yǔ)句 whilewhile do doWhileWhile第第6章章 循環(huán)控制循環(huán)控制第6章 循環(huán)控制結(jié)構(gòu) 3循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)引例:輸入引例:輸入10個(gè)數(shù),打印輸出其中最大的數(shù)。個(gè)數(shù),打印輸出其中最大的數(shù)。算法設(shè)計(jì)如下:算法設(shè)計(jì)如下:(1)輸入)輸入1個(gè)數(shù)個(gè)數(shù),存入變量存入變量A中中,將記錄數(shù)據(jù)個(gè)數(shù)的變量將記錄數(shù)據(jù)個(gè)

3、數(shù)的變量N賦賦值為值為1,即,即N=1(2)將)將A存入表示最大值的變量存入表示最大值的變量Max中,即中,即Max=A(3)再輸入一個(gè)值給)再輸入一個(gè)值給A,如果,如果AMax 則則 Max=A, 否則否則Max不變不變(4)讓記錄數(shù)據(jù)個(gè)數(shù)的變量增加)讓記錄數(shù)據(jù)個(gè)數(shù)的變量增加1,即,即N=N+1(5)判斷)判斷N是否小于是否小于10,若成立則轉(zhuǎn)到第(,若成立則轉(zhuǎn)到第(3)步執(zhí)行,)步執(zhí)行,否則轉(zhuǎn)到第(否則轉(zhuǎn)到第(6)步。)步。(6)打印輸出)打印輸出max第6章 循環(huán)控制結(jié)構(gòu) 4從從10個(gè)數(shù)中選出最大的數(shù)的流程圖個(gè)數(shù)中選出最大的數(shù)的流程圖NMaxMax =A輸入輸入A開(kāi)始開(kāi)始再輸入給再輸入給

4、AN=N+1打印打印Max結(jié)束結(jié)束YNNY第6章 循環(huán)控制結(jié)構(gòu) 5循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 執(zhí)行過(guò)程:計(jì)算表達(dá)式的值,當(dāng)值為真執(zhí)行過(guò)程:計(jì)算表達(dá)式的值,當(dāng)值為真(非非0)時(shí),時(shí), 執(zhí)行循環(huán)體語(yǔ)句。執(zhí)行循環(huán)體語(yǔ)句。 while(表達(dá)式表達(dá)式) 語(yǔ)句;語(yǔ)句; 表達(dá)式是循環(huán)條件,語(yǔ)句為循環(huán)體表達(dá)式是循環(huán)條件,語(yǔ)句為循環(huán)體表達(dá)式語(yǔ)句非006.3 while6.3 while語(yǔ)句語(yǔ)句第6章 循環(huán)控制結(jié)構(gòu) 6從從10個(gè)數(shù)中選出最大的數(shù)個(gè)數(shù)中選出最大的數(shù)void main()int a,max,n=1;scanf(%d,&a);max=a;while(nmax)max=a;printf(%dn,max);N

5、MaxMax =A輸入輸入A開(kāi)始開(kāi)始再輸入給再輸入給AN=N+1打印打印Max結(jié)束結(jié)束YNNY第6章 循環(huán)控制結(jié)構(gòu) 7循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)說(shuō)明:說(shuō)明: 計(jì)算計(jì)算的值,若表達(dá)式的值為真的值,若表達(dá)式的值為真(非非0)時(shí),則執(zhí)行時(shí),則執(zhí)行循環(huán)體語(yǔ)句;不斷反復(fù),直到表達(dá)式的值為假循環(huán)體語(yǔ)句;不斷反復(fù),直到表達(dá)式的值為假(0),則不執(zhí)行,則不執(zhí)行循環(huán)體語(yǔ)句,而直接轉(zhuǎn)向循環(huán)體外的下一條語(yǔ)句。循環(huán)體語(yǔ)句,而直接轉(zhuǎn)向循環(huán)體外的下一條語(yǔ)句。 是循環(huán)反復(fù)執(zhí)行的程序,稱(chēng)為是循環(huán)反復(fù)執(zhí)行的程序,稱(chēng)為“循環(huán)體循環(huán)體”,當(dāng)需,當(dāng)需要執(zhí)行多條語(yǔ)句時(shí),應(yīng)使用要執(zhí)行多條語(yǔ)句時(shí),應(yīng)使用“ ”括起來(lái)組成一個(gè)復(fù)合語(yǔ)句。括起來(lái)組成一個(gè)復(fù)

6、合語(yǔ)句。 while語(yǔ)句語(yǔ)句是先判斷條件,后執(zhí)行循環(huán)體,為是先判斷條件,后執(zhí)行循環(huán)體,為“當(dāng)型當(dāng)型”循循環(huán),因此若條件不成立,有可能一次也不執(zhí)行循環(huán)體。環(huán),因此若條件不成立,有可能一次也不執(zhí)行循環(huán)體。 第6章 循環(huán)控制結(jié)構(gòu) 8循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)例:求:例:求:s=1+2+3+s=1+2+3+100+100(累加法)(累加法)void main() int s=0,n=1; while (n=100) s=s+n; n+; printf(s=%d,s); 第6章 循環(huán)控制結(jié)構(gòu) 9例例: 求求n!,!,n由鍵盤(pán)輸入(累乘法)由鍵盤(pán)輸入(累乘法)void main() int n,i,s; scanf

7、(%d,&n); s=1; i=1; /*給變量給變量s、i賦初值賦初值*/ while(i=n) s=s*i; i+; printf(%d!=%dn,n,s); 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)第6章 循環(huán)控制結(jié)構(gòu) 10 例例6.6 利用公式利用公式 求求的值,要求:直的值,要求:直到最后一項(xiàng)的絕對(duì)值小于到最后一項(xiàng)的絕對(duì)值小于10-6為止。為止。循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)思考與討論:思考與討論: 1)程序中控制循環(huán)結(jié)束的)程序中控制循環(huán)結(jié)束的變量變量t是多項(xiàng)式中的通項(xiàng)。是多項(xiàng)式中的通項(xiàng)。 2)如果程序中將變量)如果程序中將變量n n定義定義為整數(shù),程序運(yùn)行會(huì)出現(xiàn)什么為整數(shù),程序運(yùn)行會(huì)出現(xiàn)什么情況?情況? .7

8、1513114#include void main() float pi,t,n; int sign=1; pi=0.0; n=1.0; t=1.0; while (fabs(t) = 1e-6) t=sign/n; pi=pi+t; n=n+2; sign= -sign; pi=pi*4; printf(pi = %fn,pi);第6章 循環(huán)控制結(jié)構(gòu) 11循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)6.4 do.while6.4 do.while語(yǔ)句語(yǔ)句 do 語(yǔ)句;語(yǔ)句; while (表達(dá)式表達(dá)式); 執(zhí)行過(guò)程:先執(zhí)行循環(huán)體語(yǔ)句一次,再判別表達(dá)執(zhí)行過(guò)程:先執(zhí)行循環(huán)體語(yǔ)句一次,再判別表達(dá)式的值,若為真式的值,若為真(

9、非非0)則繼續(xù)循環(huán),否則終止循環(huán)。則繼續(xù)循環(huán),否則終止循環(huán)。第6章 循環(huán)控制結(jié)構(gòu) 12循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)例:求:例:求:s=1+2+3+s=1+2+3+100+100void main() int s=0,n=1; do s=s+n; n+; while (n=100); printf(s=%d,s); 第6章 循環(huán)控制結(jié)構(gòu) 13循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)使用使用while和和do-while語(yǔ)句應(yīng)注意以下幾點(diǎn):語(yǔ)句應(yīng)注意以下幾點(diǎn): 1.在在if語(yǔ)句,語(yǔ)句,while語(yǔ)句中,表達(dá)式后面都不語(yǔ)句中,表達(dá)式后面都不能加分號(hào),而在能加分號(hào),而在 do-while語(yǔ)句的表達(dá)式后面則必語(yǔ)句的表達(dá)式后面則必須加分號(hào)。

10、須加分號(hào)。 2.當(dāng)循環(huán)體由多個(gè)語(yǔ)句組成時(shí),也必須用當(dāng)循環(huán)體由多個(gè)語(yǔ)句組成時(shí),也必須用括起來(lái)組成一個(gè)復(fù)合語(yǔ)句。括起來(lái)組成一個(gè)復(fù)合語(yǔ)句。 3. 如果循環(huán)至少要執(zhí)行一次,如果循環(huán)至少要執(zhí)行一次, while和和do-while語(yǔ)句可以相互替換。語(yǔ)句可以相互替換。第6章 循環(huán)控制結(jié)構(gòu) 14例例 計(jì)算計(jì)算 直到最后一項(xiàng)的絕對(duì)直到最后一項(xiàng)的絕對(duì)值小于值小于1e-7時(shí)為止。時(shí)為止。循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu).!7! 5! 3sin753xxxxx#include void main() double s,t,x; int n; printf(please input x:); scanf(%lf,&x); t

11、=x; n=1; s=x;do n=n+2; t=-t*x*x/(n-1)/n; /* 計(jì)算通項(xiàng)計(jì)算通項(xiàng) */ s=s+t; /* 累加求和累加求和 */ while(fabs(t)=1e-7); /* 當(dāng)累加項(xiàng)的值大于當(dāng)累加項(xiàng)的值大于1e-7繼續(xù)循環(huán)繼續(xù)循環(huán) */ printf(sin(%f)=%lf,x,s); 第6章 循環(huán)控制結(jié)構(gòu) 15循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 一、一、 for語(yǔ)句使用一般形式為:語(yǔ)句使用一般形式為: for(表達(dá)式表達(dá)式1;表達(dá)式;表達(dá)式2;表達(dá);表達(dá)3) 語(yǔ)句;語(yǔ)句; 表達(dá)式表達(dá)式1(控制變量的初始化控制變量的初始化 ):): 用來(lái)給循環(huán)變量賦初值用來(lái)給循環(huán)變量賦初值,也允許

12、在也允許在for語(yǔ)語(yǔ)句外給循環(huán)變量賦初值,此時(shí)可以省略該表達(dá)式。句外給循環(huán)變量賦初值,此時(shí)可以省略該表達(dá)式。表達(dá)式表達(dá)式2(循環(huán)的條件循環(huán)的條件)循環(huán)條件,一般為關(guān)系表達(dá)式或邏輯表達(dá)式。循環(huán)條件,一般為關(guān)系表達(dá)式或邏輯表達(dá)式。 表達(dá)式表達(dá)式3(循環(huán)控制變量的更新(循環(huán)控制變量的更新 ) 用來(lái)修改循環(huán)變量的值,一般是賦值語(yǔ)句。用來(lái)修改循環(huán)變量的值,一般是賦值語(yǔ)句。6.5 for6.5 for循環(huán)語(yǔ)句循環(huán)語(yǔ)句 第6章 循環(huán)控制結(jié)構(gòu) 16循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)for語(yǔ)句的執(zhí)行過(guò)程:語(yǔ)句的執(zhí)行過(guò)程: 1.首先計(jì)算表達(dá)式首先計(jì)算表達(dá)式1的值。的值。 2.再計(jì)算表達(dá)式再計(jì)算表達(dá)式2的值,若值為真的值,若值為真(

13、非非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á)式表達(dá)式2 2語(yǔ)句語(yǔ)句非非0 00 0語(yǔ)句語(yǔ)句求解表達(dá)式求解表達(dá)式1 1求解表達(dá)式求解表達(dá)式3 3注意:注意:在整個(gè)在整個(gè)for循環(huán)過(guò)程中,表達(dá)循環(huán)過(guò)程中,表達(dá)式式1只計(jì)算一次,表達(dá)式只計(jì)算一次,表達(dá)式2和表達(dá)式和表達(dá)式3則可能計(jì)算多次。則可能計(jì)算多次。第6章 循環(huán)控制結(jié)構(gòu) 17循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)例:用例:用forfor語(yǔ)句計(jì)算語(yǔ)句計(jì)算s=1+2+3+.+99+100s=1+2+3+.+99+100 void main() int

14、n,s=0; for(n=1;n=100;n+) s=s+n; printf(s=%dn,s); void main() int s=0,n=1; while (n=100) s=s+n; n+; printf(“s=%d,s); 第6章 循環(huán)控制結(jié)構(gòu) 18循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)例:例: 求求n!,!,n由鍵盤(pán)輸入(累乘法)由鍵盤(pán)輸入(累乘法)void main() int n,i,s; scanf(%d,&n); s=1; i=1; /*給變量給變量s、i賦初值賦初值*/ while(i=n) s*=i; i+; printf(%d!=%dn,n,s); for(s=1, i=1;i=n;

15、i+) s=s*i; 第6章 循環(huán)控制結(jié)構(gòu) 19循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)有關(guān)有關(guān)forfor語(yǔ)句的幾點(diǎn)說(shuō)明:語(yǔ)句的幾點(diǎn)說(shuō)明: (1)for語(yǔ)句的一般形式中的語(yǔ)句的一般形式中的“ “表達(dá)式表達(dá)式1”可以省略,此時(shí)應(yīng)可以省略,此時(shí)應(yīng)在在for語(yǔ)句之前給循環(huán)變量賦初值。注意省略表達(dá)式語(yǔ)句之前給循環(huán)變量賦初值。注意省略表達(dá)式1時(shí),其后的時(shí),其后的分號(hào)不能省略。分號(hào)不能省略。例如:例如:i=1;i=1; for(; i=n; i+) t=t*i; 執(zhí)行時(shí),跳過(guò)執(zhí)行時(shí),跳過(guò)“ “求解表達(dá)式求解表達(dá)式1”這一步,其他不變。這一步,其他不變。 第6章 循環(huán)控制結(jié)構(gòu) 20循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)有關(guān)有關(guān)forfor語(yǔ)句的幾點(diǎn)說(shuō)

16、明:語(yǔ)句的幾點(diǎn)說(shuō)明: 2 2)如果表達(dá)式)如果表達(dá)式2 2省略,即不判斷循環(huán)條件,循環(huán)無(wú)終止地省略,即不判斷循環(huán)條件,循環(huán)無(wú)終止地進(jìn)行下去。也就是認(rèn)為表達(dá)式進(jìn)行下去。也就是認(rèn)為表達(dá)式2 2 始終為真,在形式上構(gòu)成死循始終為真,在形式上構(gòu)成死循環(huán)。環(huán)。例如:例如: for(i=1; ; i+) t=t*i;表達(dá)式表達(dá)式1 1是一個(gè)賦值表達(dá)式,表達(dá)式是一個(gè)賦值表達(dá)式,表達(dá)式2 2省略。它相當(dāng)于:省略。它相當(dāng)于: i=1; while(1) t=t*i; i+; 第6章 循環(huán)控制結(jié)構(gòu) 21循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)有關(guān)有關(guān)forfor語(yǔ)句的幾點(diǎn)說(shuō)明:語(yǔ)句的幾點(diǎn)說(shuō)明: 3)表達(dá)式)表達(dá)式3也可以省略,但此時(shí)程序

17、設(shè)計(jì)者應(yīng)另外設(shè)法保也可以省略,但此時(shí)程序設(shè)計(jì)者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束,表達(dá)式證循環(huán)能正常結(jié)束,表達(dá)式3的功能放到循環(huán)體內(nèi)。例如:的功能放到循環(huán)體內(nèi)。例如:for(i=1;i=n;) t=t*i; i+; 4)可以省略表達(dá)式)可以省略表達(dá)式1和表達(dá)式和表達(dá)式3,只有表達(dá)式,只有表達(dá)式2,即只給循環(huán),即只給循環(huán)條件,如:條件,如:for(;i=n;) while(i=n)t=t*i; 相當(dāng)于相當(dāng)于 t=t*i; i+; i+;第6章 循環(huán)控制結(jié)構(gòu) 22循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)有關(guān)有關(guān)forfor語(yǔ)句的幾點(diǎn)說(shuō)明:語(yǔ)句的幾點(diǎn)說(shuō)明: 5)3個(gè)表達(dá)式都可省略,例如:個(gè)表達(dá)式都可省略,例如: for(;) 語(yǔ)

18、句語(yǔ)句 相當(dāng)于相當(dāng)于 while(1)語(yǔ)句。語(yǔ)句。 即不設(shè)初值,不判斷條件(認(rèn)為表達(dá)式即不設(shè)初值,不判斷條件(認(rèn)為表達(dá)式2為真值),循環(huán)變?yōu)檎嬷担h(huán)變量不增值。循環(huán)為量不增值。循環(huán)為“死循環(huán)死循環(huán)”。 6)表達(dá)式)表達(dá)式1和表達(dá)式和表達(dá)式3可以是一個(gè)簡(jiǎn)單的表達(dá)式,也可以是可以是一個(gè)簡(jiǎn)單的表達(dá)式,也可以是逗號(hào)表達(dá)式,即包含一個(gè)以上的簡(jiǎn)單表達(dá)式,中間用逗號(hào)間隔。逗號(hào)表達(dá)式,即包含一個(gè)以上的簡(jiǎn)單表達(dá)式,中間用逗號(hào)間隔。 例如:例如: for(t=1, i=1;i=n ; t=t*i, i+);第6章 循環(huán)控制結(jié)構(gòu) 23循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)三種循環(huán)語(yǔ)句比較三種循環(huán)語(yǔ)句比較 for ( ) while

19、( ) do . while(); 循循環(huán)環(huán)類(lèi)類(lèi)型型 當(dāng)當(dāng)型型循循環(huán)環(huán) 當(dāng)當(dāng)型型循循環(huán)環(huán) 直直到到循循環(huán)環(huán) 循循環(huán)環(huán)控控制制條條件件 表表達(dá)達(dá)式式 2 值值非非 0 表表達(dá)達(dá)式式值值非非 0 表表達(dá)達(dá)式式值值非非 0 循循環(huán)環(huán)變變量量初初值值 在在 for 語(yǔ)語(yǔ)句句行行中中 在在 while 之之前前 在在 do 之之前前 使使循循環(huán)環(huán)結(jié)結(jié)束束 表表達(dá)達(dá)式式 3 循循環(huán)環(huán)體體中中使使用用專(zhuān)專(zhuān)門(mén)門(mén)語(yǔ)語(yǔ)句句 循循環(huán)環(huán)體體中中使使用用專(zhuān)專(zhuān)門(mén)門(mén)語(yǔ)語(yǔ)句句 第6章 循環(huán)控制結(jié)構(gòu) 24三種循環(huán)語(yǔ)句比較三種循環(huán)語(yǔ)句比較 說(shuō)明:說(shuō)明: 1)3種循環(huán)中種循環(huán)中for語(yǔ)句功能最強(qiáng)大,使用最多,任何情況的語(yǔ)句功能最強(qiáng)

20、大,使用最多,任何情況的循環(huán)都可使用循環(huán)都可使用for語(yǔ)句實(shí)現(xiàn)。語(yǔ)句實(shí)現(xiàn)。for語(yǔ)句與語(yǔ)句與while語(yǔ)句的等價(jià)代換形語(yǔ)句的等價(jià)代換形式如下:式如下:for(;) 語(yǔ)句語(yǔ)句; 2)當(dāng)循環(huán)體至少執(zhí)行一次時(shí),用)當(dāng)循環(huán)體至少執(zhí)行一次時(shí),用do.while語(yǔ)句與語(yǔ)句與while語(yǔ)句語(yǔ)句等價(jià)。如果循環(huán)體可能一次也不執(zhí)行,則只能使用等價(jià)。如果循環(huán)體可能一次也不執(zhí)行,則只能使用while語(yǔ)句或語(yǔ)句或for語(yǔ)句。語(yǔ)句。表達(dá)式表達(dá)式1;while (表達(dá)式表達(dá)式2) ; 表達(dá)式表達(dá)式3;第6章 循環(huán)控制結(jié)構(gòu) 25循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)6.6 6.6 循環(huán)的嵌套循環(huán)的嵌套多重循環(huán)結(jié)構(gòu)多重循環(huán)結(jié)構(gòu)一個(gè)循環(huán)內(nèi)完整地包含另

21、一個(gè)循環(huán)結(jié)構(gòu),則稱(chēng)為多重循環(huán)一個(gè)循環(huán)內(nèi)完整地包含另一個(gè)循環(huán)結(jié)構(gòu),則稱(chēng)為多重循環(huán) 嵌套一層稱(chēng)為二重循環(huán),嵌套二層稱(chēng)為三重循環(huán)嵌套一層稱(chēng)為二重循環(huán),嵌套二層稱(chēng)為三重循環(huán) (4) while( ) for( ) (1) while( ) while( ) do do while( ); while( );(3) for( ) for( ) 第6章 循環(huán)控制結(jié)構(gòu) 26循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)(7) while( ) do while( ); (5) for( ) while( ) (6) dofor( ) while();(8) for( ) do while( ); 第6章 循環(huán)控制結(jié)構(gòu) 27循環(huán)結(jié)構(gòu)循環(huán)結(jié)

22、構(gòu)void main() int i,j;for(i=1;i=3;i+)printf(i=%d ,i);for(j=1;j=3;j+)printf(j=%d ,j);printf(n);共執(zhí)行共執(zhí)行9次次共執(zhí)行共執(zhí)行3次次對(duì)于循環(huán)的嵌套,要注意以下事項(xiàng):對(duì)于循環(huán)的嵌套,要注意以下事項(xiàng):(1) 內(nèi)循環(huán)變量與外循環(huán)變量不能同名;內(nèi)循環(huán)變量與外循環(huán)變量不能同名;(2) 外循環(huán)必須完全包含內(nèi)循環(huán);外循環(huán)必須完全包含內(nèi)循環(huán);第6章 循環(huán)控制結(jié)構(gòu) 28循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)補(bǔ)充例題:補(bǔ)充例題:打印如下形式的九九乘法表打印如下形式的九九乘法表.void main() int x,y; for(x=1;x=9;x+

23、) for(y=1;y=9;y+) printf(%d*%d=%2d ,x,y,x*y); printf(n); 第6章 循環(huán)控制結(jié)構(gòu) 29循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)例例:打印由數(shù)字組成的如下所示金字塔圖案打印由數(shù)字組成的如下所示金字塔圖案 編程分析:打印圖案一般可由多重循環(huán)實(shí)現(xiàn),編程分析:打印圖案一般可由多重循環(huán)實(shí)現(xiàn),外循環(huán)用來(lái)控制打印的行數(shù),內(nèi)循環(huán)控制每行的外循環(huán)用來(lái)控制打印的行數(shù),內(nèi)循環(huán)控制每行的空格數(shù)和字符個(gè)數(shù)。實(shí)現(xiàn)打印上金字塔圖案的程空格數(shù)和字符個(gè)數(shù)。實(shí)現(xiàn)打印上金字塔圖案的程序如下:序如下:void main()void main() int i,k,j; int i,k,j; for(i=1

24、;i=9;i+) / for(i=1;i=9;i+) /* * 外循環(huán)控制打印行數(shù)外循環(huán)控制打印行數(shù) * */ / for (k=1;k=10-i;k+)for (k=1;k=10-i;k+) / /* * 每行起始打印位置每行起始打印位置 * */ / printf( );printf( ); for (j=1;j=2for (j=1;j=2* *i-1;j+)i-1;j+) / /* * 內(nèi)循環(huán)控制打印個(gè)數(shù)內(nèi)循環(huán)控制打印個(gè)數(shù)* */ / printf(%c,48+i);printf(%c,48+i); printf(n); / printf(n); /* * 換行換行 * */ / 1 1

25、 222 222 33333 33333 4444444 4444444 555555555 555555555 66666666666 66666666666 7777777777777 7777777777777 888888888888888 888888888888888 9999999999999999 9999999999999999思考與討論:思考與討論: 1)如果將程序中的數(shù)值)如果將程序中的數(shù)值“10”改為改為“20”,程序的輸出結(jié)果有什么不同?,程序的輸出結(jié)果有什么不同?如果改為如果改為“5”,輸出結(jié)果如何?,輸出結(jié)果如何? 2)能否將語(yǔ)句)能否將語(yǔ)句“printf(%c,

26、48+i);”改為改為“printf(%c,0+i);”? 第6章 循環(huán)控制結(jié)構(gòu) 30 其它控制語(yǔ)句其它控制語(yǔ)句 6.8.1 break6.8.1 break語(yǔ)句語(yǔ)句 作用范圍:作用范圍:switch 語(yǔ)句語(yǔ)句或或循環(huán)語(yǔ)句循環(huán)語(yǔ)句功能:功能:跳出跳出switch語(yǔ)句語(yǔ)句或跳出或跳出本層循環(huán)本層循環(huán), 轉(zhuǎn)去執(zhí)行后面的程序。轉(zhuǎn)去執(zhí)行后面的程序。break語(yǔ)句的一般形式為:語(yǔ)句的一般形式為: break; 注意:注意:break語(yǔ)句用于循環(huán)體中,一般與語(yǔ)句用于循環(huán)體中,一般與if語(yǔ)句聯(lián)合使用語(yǔ)句聯(lián)合使用第6章 循環(huán)控制結(jié)構(gòu) 31 其它控制語(yǔ)句其它控制語(yǔ)句 例例: 打印打印11000中能同時(shí)被中能同時(shí)

27、被3和和5整除的前整除的前10個(gè)數(shù)。個(gè)數(shù)。#include void main() int k,n=0;for(k=1;kn。2)m除以除以n得余數(shù)得余數(shù)r。3)若)若r=0,則,則n為求得的最大公約數(shù),為求得的最大公約數(shù),算法結(jié)束;否則執(zhí)行算法結(jié)束;否則執(zhí)行4)。)。4)mn,nr,再重復(fù)執(zhí)行,再重復(fù)執(zhí)行2)。)。(最小公倍數(shù)(最小公倍數(shù)=兩個(gè)整數(shù)之積兩個(gè)整數(shù)之積/最大公約最大公約數(shù))。數(shù))。(具體代碼見(jiàn)習(xí)題解)(具體代碼見(jiàn)習(xí)題解)第6章 循環(huán)控制結(jié)構(gòu) 33求兩個(gè)整數(shù)的最大公約數(shù)。(從最大公約數(shù)的定義出發(fā))求兩個(gè)整數(shù)的最大公約數(shù)。(從最大公約數(shù)的定義出發(fā))循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)編程分析:編程分析:

28、1)輸入兩個(gè)整數(shù))輸入兩個(gè)整數(shù)m,n;2)比較)比較m、n的大小,令的大小,令t等于其中的較小值;等于其中的較小值;3)判斷)判斷t是否同時(shí)整除是否同時(shí)整除m、n,是則執(zhí)行步驟,是則執(zhí)行步驟5,否則執(zhí),否則執(zhí)行步驟行步驟4;4)t的值遞減的值遞減1,重復(fù)步驟,重復(fù)步驟3;5)輸出)輸出t,即為,即為m、n的最大公約數(shù)。的最大公約數(shù)。(最小公倍數(shù)(最小公倍數(shù)=兩個(gè)整數(shù)之積兩個(gè)整數(shù)之積/最大公約數(shù))。最大公約數(shù))。第6章 循環(huán)控制結(jié)構(gòu) 34 其它控制語(yǔ)句其它控制語(yǔ)句 6.8.2 continue6.8.2 continue語(yǔ)句語(yǔ)句 作用范圍:作用范圍:只能用在循環(huán)體中只能用在循環(huán)體中功能:功能:結(jié)

29、束結(jié)束本次循環(huán)本次循環(huán),轉(zhuǎn)入下一次循環(huán),轉(zhuǎn)入下一次循環(huán) 條件的判斷與執(zhí)行。條件的判斷與執(zhí)行。其一般格式是:其一般格式是: continue; 注意:注意:本語(yǔ)句只結(jié)束本語(yǔ)句只結(jié)束本層本次本層本次的循環(huán),并的循環(huán),并不跳出不跳出循環(huán)。循環(huán)。第6章 循環(huán)控制結(jié)構(gòu) 35 其它控制語(yǔ)句其它控制語(yǔ)句 例例:計(jì)算半徑為計(jì)算半徑為1到到15的圓的面積,僅打印面積超過(guò)的圓的面積,僅打印面積超過(guò)50的圓面積。的圓面積。void main() int r; float area; for(r=1;r=15;r+) area=3.141593*r*r; if(area50.0) continue; printf(

30、square=%fn,area); 第6章 循環(huán)控制結(jié)構(gòu) 36 其它控制語(yǔ)句其它控制語(yǔ)句 void main() int n; for(n=7;n=100;n+) if (n%7!=0) continue; printf(%d ,n); void main() int n; for(n=7;n=100;n+) if (n%7=0) printf(%d ,n); 使用使用continue不用不用continue第6章 循環(huán)控制結(jié)構(gòu) 37break:語(yǔ)句只能用在語(yǔ)句只能用在switch 語(yǔ)句或循環(huán)語(yǔ)句中,語(yǔ)句或循環(huán)語(yǔ)句中, 其作用是跳其作用是跳出出switch語(yǔ)句或跳出語(yǔ)句或跳出本層本層循環(huán),轉(zhuǎn)去

31、執(zhí)行后面的程序。循環(huán),轉(zhuǎn)去執(zhí)行后面的程序。continue:結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中:結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue 語(yǔ)語(yǔ)句之后的語(yǔ)句,轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行。應(yīng)注意句之后的語(yǔ)句,轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行。應(yīng)注意的是,的是, 本語(yǔ)句只結(jié)束本語(yǔ)句只結(jié)束本層本次本層本次的循環(huán),并不跳出循環(huán)。的循環(huán),并不跳出循環(huán)。break與與continue的區(qū)別的區(qū)別 其它控制語(yǔ)句其它控制語(yǔ)句 第6章 循環(huán)控制結(jié)構(gòu) 38 應(yīng)用程序舉例應(yīng)用程序舉例 #include math.hvoid main() int m,i,k; scanf(%d,&m); k=sqrt(

32、m); for(i=2;ik) printf(Yesn); else printf(Non); 例例6.86.8 判斷一個(gè)給定的整數(shù)是否為素?cái)?shù)判斷一個(gè)給定的整數(shù)是否為素?cái)?shù)輸入輸入mk=sqrt(m); i=2;ikYesNo結(jié)束結(jié)束YNNYYN第6章 循環(huán)控制結(jié)構(gòu) 39 應(yīng)用程序舉例應(yīng)用程序舉例 #include math.hvoid main() int m,i,k; for(m=100;m=200;m+) k=sqrt(m); for(i=2;ik) printf(%dn,m); 例例6.96.9 求求100100200200間的全部素?cái)?shù)間的全部素?cái)?shù)第6章 循環(huán)控制結(jié)構(gòu) 40 應(yīng)用程序舉例

33、應(yīng)用程序舉例 窮舉法窮舉法基本思想:一一列舉各種可能的情況,并判斷哪一種可能是符合要求基本思想:一一列舉各種可能的情況,并判斷哪一種可能是符合要求 voidvoid main()int x, y, z,n;printf( 5yun 1yun 0.5yunn);n=0;for(x=1; x=100;x+) for(y=1;y=100;y+) for(z=1;z=100;z+) if(x+y+z=100 & 5*x+y+0.5*z=100) printf(%d %d %dn,x,y,z); n+; printf( Total %d,n);例例:將一張面值為將一張面值為100元的人民幣等值換成元的人民幣等值換成100張張5元、

溫馨提示

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