版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計本章內(nèi)容本章內(nèi)容1.循環(huán)結(jié)構(gòu)概述循環(huán)結(jié)構(gòu)概述2.goto語句及用語句及用goto語句構(gòu)成的循環(huán)語句構(gòu)成的循環(huán)3.While語句的使用語句的使用4.Do While語句的使用語句的使用5.For 語句的使用語句的使用6.循環(huán)的嵌套循環(huán)的嵌套7.Break語句和語句和Continue語句的使用語句的使用8.程序舉例程序舉例 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計2輸入輸入10個整數(shù),求它們的平均值,并輸出大于平均值個整數(shù),求它們的平均值,并輸出大于平均值的個數(shù)。的個數(shù)。main() int a,b,c,d,e,f,g,h,i,
2、j,n=0; float average; scanf(“%d”, &a); scanf(“%d”, &b); scanf(“%d”, &c); scanf(“%d”, &d); scanf(“%d”, &e); scanf(“%d”, &f); scanf(“%d”, &g); scanf(“%d”, &h); scanf(“%d”, &i); scanf(“%d”, &j); C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計3average=(a+b+c+d+e+f+g+h+i+j)/10;if(
3、 aaverage ) n=n+1;if( baverage ) n=n+1;if( caverage ) n=n+1;if( daverage ) n=n+1;if( eaverage ) n=n+1;if( faverage ) n=n+1;if( gaverage ) n=n+1;if( haverage ) n=n+1;if( iaverage ) n=n+1;if( javerage ) n=n+1;printf(“n=%d,n); C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計46.1 概概 述述 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是程序中一種很重要的結(jié)構(gòu)。其特點是,是程序中一種很重
4、要的結(jié)構(gòu)。其特點是, 在給定在給定條件成立時,反復(fù)執(zhí)行某程序段,直到條件不成立為止。條件成立時,反復(fù)執(zhí)行某程序段,直到條件不成立為止。 給定給定的條件稱為的條件稱為循環(huán)條件循環(huán)條件,反復(fù)執(zhí)行的程序段,反復(fù)執(zhí)行的程序段稱為循環(huán)體稱為循環(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語句語句 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計5表達(dá)式語句表達(dá)式語句a
5、) 當(dāng)型循環(huán)當(dāng)型循環(huán)b) 直到循環(huán)直到循環(huán)非00非00 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計66.2 goto語句及用語句及用goto語句構(gòu)成的循環(huán)語句構(gòu)成的循環(huán) 一、無條件轉(zhuǎn)移語句一、無條件轉(zhuǎn)移語句goto語句語句 一般格式:一般格式: goto 語句標(biāo)號語句標(biāo)號; 其中其中語句標(biāo)號語句標(biāo)號是按標(biāo)識符規(guī)定書寫的符號,放在某一語句是按標(biāo)識符規(guī)定書寫的符號,放在某一語句行的前面,標(biāo)號后加冒號行的前面,標(biāo)號后加冒號(:)。語句標(biāo)號起標(biāo)識語句的作用,。語句標(biāo)號起標(biāo)識語句的作用,與與goto 語句配合使用。語句配合使用。 如:如: label: i+; goto label;
6、 語言不限制程序中使用標(biāo)號的次數(shù),但各標(biāo)號不得重名。語言不限制程序中使用標(biāo)號的次數(shù),但各標(biāo)號不得重名。 goto語句的語義是改變程序流向,轉(zhuǎn)去執(zhí)行語句標(biāo)號所標(biāo)識語句的語義是改變程序流向,轉(zhuǎn)去執(zhí)行語句標(biāo)號所標(biāo)識的語句。的語句。 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計7二、用二、用goto語句與語句與if語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)用goto語句與if語句實現(xiàn)循環(huán)的形式:形式形式1:loop1: 語句;語句; if (表達(dá)式)(表達(dá)式) goto loop1;形式形式2:loop1: if (表達(dá)式)(表達(dá)式) goto loop2; 語句;語句; goto loop1;loo
7、p2 : 注意:注意:在結(jié)構(gòu)化程序設(shè)計中一般不主張使用在結(jié)構(gòu)化程序設(shè)計中一般不主張使用goto語句,語句, 以以免造成程序流程的混亂,使理解和調(diào)試程序都產(chǎn)生困難。免造成程序流程的混亂,使理解和調(diào)試程序都產(chǎn)生困難。 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計8例例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; loop2: printf(S=%d,s); C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)
8、計9例例2:統(tǒng)計從鍵盤輸入一行字符的個數(shù)。:統(tǒng)計從鍵盤輸入一行字符的個數(shù)。 #includestdio.h void main() int n=0; printf(input a stringn); loop: if(getchar()!=n) n+; goto loop; printf(%d,n); C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計106.3 while 語句語句 執(zhí)行過程執(zhí)行過程是:計算表達(dá)式的值,當(dāng)值為真是:計算表達(dá)式的值,當(dāng)值為真(非非0)時,時, 執(zhí)執(zhí)行循環(huán)體語句。如右上圖。行循環(huán)體語句。如右上圖。 while語句的一般形式為:語句的一般形式為: whi
9、le(表達(dá)式表達(dá)式) 語句;語句; 其中其中表達(dá)式表達(dá)式是循環(huán)條件,是循環(huán)條件,語句語句為為循環(huán)體,若是多個語句則必須用循環(huán)體,若是多個語句則必須用 組成復(fù)合語句組成復(fù)合語句。表達(dá)式語句非00 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計11例例1: 編程序求:編程序求:s=1+2+3+100main() int s=0,n=1; while (n=100) s=s+n; n+; printf(S=%d,s); C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計126.4 Dowhile語句 do-while語句的一般形式為:語句的一般形式為: do 語句;語句;
10、 while (表達(dá)式表達(dá)式); 其中:語句是循環(huán)體, 表達(dá)式是循環(huán)條件。 表達(dá)式語句非00 執(zhí)行過程:執(zhí)行過程:先執(zhí)行循環(huán)體語句一次, 再判別表達(dá)式的值,若為真(非0)則繼續(xù)循環(huán),否則終止循環(huán)。 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計13例例1: 編程序求:編程序求:s=1+2+3+100main() int s=0,n=1; do s=s+n; n+; while (n=100); printf(S=%d,s); C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計14使用使用while和和do-while語句應(yīng)注意以下幾點:語句應(yīng)注意以下幾點: 1.在在
11、if語句,語句,while語句中,表達(dá)式后面都不能加分語句中,表達(dá)式后面都不能加分號,號, 而在而在 do-while語句的表達(dá)式后面則必須加語句的表達(dá)式后面則必須加分號分號。 2.do-while語句也可以組成多重循環(huán),而且也可以語句也可以組成多重循環(huán),而且也可以和和while語句相互語句相互嵌套嵌套。 3.當(dāng)循環(huán)體由多個語句組成時,也必須用當(dāng)循環(huán)體由多個語句組成時,也必須用括起來括起來組成一個復(fù)合語句。組成一個復(fù)合語句。 4.如果循環(huán)至少要執(zhí)行一次,如果循環(huán)至少要執(zhí)行一次,while和和do-while語句語句可以相互可以相互替換替換。 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)
12、構(gòu)程序設(shè)計156.5 for語句語句 for語句是語言所提供的功能更強,使用更廣泛的一種語句是語言所提供的功能更強,使用更廣泛的一種循環(huán)語句。循環(huán)語句。一、使用一般形式為:一、使用一般形式為: for(表達(dá)式表達(dá)式1;表達(dá)式;表達(dá)式2;表達(dá)式;表達(dá)式3) 語句;語句; 其中其中:表達(dá)式表達(dá)式1通常用來給循環(huán)變量賦初值,一般是賦值表達(dá)式。也允許在for語句外給循環(huán)變量賦初值,此時可以省略該表達(dá)式。 表達(dá)式表達(dá)式2通常是循環(huán)條件,一般為關(guān)系表達(dá)式或邏輯表達(dá)式。 表達(dá)式表達(dá)式3通??捎脕硇薷难h(huán)變量的值,一般是賦值語句。 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計16for語句的
13、執(zhí)行過程:語句的執(zhí)行過程: 1.首先計算首先計算表達(dá)式表達(dá)式1的值。的值。 2.再計算再計算表達(dá)式表達(dá)式2的值,若值為的值,若值為真真(非非0)則執(zhí)行循環(huán)體一次,則執(zhí)行循環(huán)體一次, 否則否則跳出循環(huán)。跳出循環(huán)。 3.然后再計算然后再計算表達(dá)式表達(dá)式3的值,的值,轉(zhuǎn)回第轉(zhuǎn)回第2步重復(fù)執(zhí)行。步重復(fù)執(zhí)行。 在整個在整個for循環(huán)過程中,表達(dá)循環(huán)過程中,表達(dá)式式1只計算一次,表達(dá)式只計算一次,表達(dá)式2和表達(dá)和表達(dá)式式3則可能計算多次。循環(huán)體可能則可能計算多次。循環(huán)體可能多次執(zhí)行,也可能一次都不執(zhí)行。多次執(zhí)行,也可能一次都不執(zhí)行。表達(dá)式2語句非00語句求解表達(dá)式1求解表達(dá)式3for 語句的執(zhí)行過程語句的
14、執(zhí)行過程 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計17例:用例:用for語句計算語句計算s=1+2+3+.+99+100 main() int n,s=0; for(n=1;n=100;n+) s=s+n; printf(s=%dn,s); 本例本例for語句中的表達(dá)式語句中的表達(dá)式3為為n+,實際上也是一,實際上也是一種賦值語句,相種賦值語句,相當(dāng)于當(dāng)于n=n+1,以改變循環(huán)變量的值。,以改變循環(huán)變量的值。 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計18二、在使用二、在使用for語句中要語句中要注意注意以下幾點:以下幾點: 1.for語句中的各表達(dá)式
15、都可省略,但語句中的各表達(dá)式都可省略,但分號間隔符分號間隔符不能少不能少 如:如:for(;表達(dá)式;表達(dá)式2;表達(dá)式;表達(dá)式3) 省去了表達(dá)式省去了表達(dá)式1。 for(表達(dá)式表達(dá)式1;表達(dá)式;表達(dá)式3) 省去了表達(dá)式省去了表達(dá)式2。 for(表達(dá)式表達(dá)式1;表達(dá)式;表達(dá)式2;) 省去了表達(dá)式省去了表達(dá)式3。 for(;) 省去了全部表達(dá)式。省去了全部表達(dá)式。 2.在循環(huán)變量已賦初值時,可省去表達(dá)式在循環(huán)變量已賦初值時,可省去表達(dá)式1。如省去表達(dá)式。如省去表達(dá)式2或表達(dá)式或表達(dá)式3則將造成無限循環(huán),這時應(yīng)在循環(huán)則將造成無限循環(huán),這時應(yīng)在循環(huán)體內(nèi)設(shè)法體內(nèi)設(shè)法結(jié)束循結(jié)束循環(huán)環(huán)。 C語言程序設(shè)計 第六
16、章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計19main() int n=1,s=0; for(;n=100;n+) s=s+n; printf(s=%dn,s); main() int n=1,s=0; for(;n100) break; printf(s=%dn,s); for( ; ; )等效于等效于while( 1) C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計21 3. for語句中的語句中的 三個表達(dá)式都可以是三個表達(dá)式都可以是逗號表達(dá)式逗號表達(dá)式, 即每個表即每個表達(dá)式都可由多個達(dá)式都可由多個表達(dá)式組成。表達(dá)式組成。 例:例:main() int n,s; for
17、(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); 這里為什么要加; C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計22例:統(tǒng)計從鍵盤輸入一行字符的個數(shù)。例:統(tǒng)計從鍵盤輸入一行字符的個數(shù)。 #includestdio.h void main() int n=0; printf(input a string:n); for(;getchar()!=n;n+); printf(%d,n); 說明:說明:本例中,省去了本例中
18、,省去了for語句的表達(dá)式語句的表達(dá)式1,表達(dá)式,表達(dá)式3也不是用也不是用來修改循環(huán)變量,而是用作輸入字符的計數(shù)。這樣,來修改循環(huán)變量,而是用作輸入字符的計數(shù)。這樣, 就把本應(yīng)在就把本應(yīng)在循環(huán)體中完成的計數(shù)放在表達(dá)式中完成了。因此循環(huán)體是空語句。循環(huán)體中完成的計數(shù)放在表達(dá)式中完成了。因此循環(huán)體是空語句。應(yīng)注意的是,應(yīng)注意的是,空語句后的分號不可少,空語句后的分號不可少,如缺少此分號,則把后面如缺少此分號,則把后面的的printf 語句當(dāng)成循環(huán)體來執(zhí)行。語句當(dāng)成循環(huán)體來執(zhí)行。 反過來說,反過來說,如循環(huán)體不為空語句時,如循環(huán)體不為空語句時, 決不能在表達(dá)式的括號決不能在表達(dá)式的括號后加分號,后加
19、分號, 這樣又會認(rèn)為循環(huán)體是空語句而不能執(zhí)行循環(huán)體。這樣又會認(rèn)為循環(huán)體是空語句而不能執(zhí)行循環(huán)體。 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計236.6 循環(huán)的嵌套循環(huán)的嵌套 for語句也可與語句也可與while,do-while語句相互嵌套,構(gòu)成多重循環(huán)。語句相互嵌套,構(gòu)成多重循環(huán)。以下形式都合法的嵌套。以下形式都合法的嵌套。(4) while() for() (1) while( ) while( ) (2)do do while() while();(3) for() for() C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計24(7) while()
20、do while(); (5) for( ) while( ) (6) dofor( ) while();(8) for() do while(); C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計25例:打印如下形式的九九乘法表例:打印如下形式的九九乘法表.main() int x,y; for(x=1;x=9;x+) for(y=1;y100) break; s=s+n; n+; printf(s=%dn,s); C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計29 分析下面程序的功能分析下面程序的功能main() char a,b; printf(input
21、a string:n); b=getchar(); while(a=getchar()!=n) if(a=b) printf(same charactern); break; b=a; 功能是:功能是: 檢查輸入的一行中有無相鄰兩字符相同。檢查輸入的一行中有無相鄰兩字符相同。 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計30 done=0; for( ) for ( ) while ( ) if ( ) done=1; break; if (done) break; if (done) break; 多層嵌套循環(huán):多層嵌套循環(huán): 可用可用goto退出退出; 而而break;只
22、能退出只能退出本層循環(huán)。本層循環(huán)。 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計31main() int n; for(n=7;n=100;n+) if (n%7!=0) continue; printf(%d ,n); main() int n; for(n=7;n=3) fn=fn-1+fn-2 (n=3) 程序如下程序如下 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計33main() main() long f1,f2; long f1,f2; int int k; k; f1=1;f2=1; f1=1;f2=1; for(k=1;k=20;k+) f
23、or(k=1;k=20;k+) printf(%12ld %12ld,f1,f2); printf(%12ld %12ld,f1,f2); if(k%2=0) printf(n if(k%2=0) printf(n); ); f1=f1+f2; f1=f1+f2; f2=f2+f1; f2=f2+f1; C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計34 例例6.8 判斷一個整數(shù)判斷一個整數(shù)m是否是素數(shù)。是否是素數(shù)。 素數(shù)是只能被素數(shù)是只能被1 和本身整除的數(shù)。和本身整除的數(shù)。 教材教材Pg.126 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計35#include math.hvoid main() int m,i,k; printf(Enter m=n); scanf(%d,&m); k=sqrt(m); for(i=2;ik) printf(Yesn); else printf(Non); 輸入輸入m當(dāng)當(dāng)ikYN打印打印Yesbreak打印打印No程序流程圖程序流程圖 C語言程序設(shè)計 第六章第六章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計36例例6.9 打印打印輸出輸出100200之間之間的素數(shù)。的素數(shù)。 #include math.hvoid main() int n=0,i,k,m; for (m=101;m=199;m+) k=sqr
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度電商虛擬現(xiàn)實技術(shù)應(yīng)用委托經(jīng)營協(xié)議3篇
- 二零二五年度奶粉品牌線上直播帶貨代理合同
- 二零二五版智能停車場建設(shè)工程承包簡易合同3篇
- 二零二五年度公益活動布展策劃與實施協(xié)議3篇
- 2025年度煤炭行業(yè)信用風(fēng)險管理合作協(xié)議書
- 2025年綠色建筑項目泥水工安全責(zé)任合同
- 二零二五年度馬鈴薯種植保險及風(fēng)險防控合作協(xié)議4篇
- 二零二五年船舶空調(diào)系統(tǒng)改造與環(huán)保驗收合同3篇
- 個人住宅室內(nèi)裝修設(shè)計服務(wù)合同(2024版)3篇
- 2025年度化肥電商平臺合作與服務(wù)協(xié)議2篇
- 物流無人機垂直起降場選址與建設(shè)規(guī)范
- 肺炎臨床路徑
- 外科手術(shù)鋪巾順序
- 創(chuàng)新者的窘境讀書課件
- 綜合素質(zhì)提升培訓(xùn)全面提升個人綜合素質(zhì)
- 如何克服高中生的社交恐懼癥
- 聚焦任務(wù)的學(xué)習(xí)設(shè)計作業(yè)改革新視角
- 移動商務(wù)內(nèi)容運營(吳洪貴)任務(wù)三 APP的品牌建立與價值提供
- 電子競技范文10篇
- 食堂服務(wù)質(zhì)量控制方案與保障措施
- VI設(shè)計輔助圖形設(shè)計(2022版)
評論
0/150
提交評論