《循環(huán)結(jié)構(gòu)》PPT課件
《《循環(huán)結(jié)構(gòu)》PPT課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《《循環(huán)結(jié)構(gòu)》PPT課件(33頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第5章 循環(huán)結(jié)構(gòu)本章要點(diǎn):5.1 while語(yǔ)句和用while語(yǔ)句構(gòu)成的循環(huán)結(jié)構(gòu)5.2 do-while語(yǔ)句和用do-while語(yǔ)句構(gòu)成的循環(huán)結(jié)構(gòu)5.3 for語(yǔ)句和用for語(yǔ)句構(gòu)成的循環(huán)結(jié)構(gòu)5.4 循環(huán)結(jié)構(gòu)的嵌套5.5 break和continue語(yǔ)句在循環(huán)體中的作用5.6 程序舉例 5.1.1 while循環(huán)的一般形式由while語(yǔ)句構(gòu)成的循環(huán)也稱“當(dāng)”循環(huán),While語(yǔ)句的一般形式為:While(表達(dá)式)循環(huán)語(yǔ)句;以下是幾點(diǎn)說(shuō)明:1while是C語(yǔ)言的關(guān)鍵字。2while后的表達(dá)式,可以是C語(yǔ)言中任意合法的表達(dá)式,通常為關(guān)系表達(dá)式或邏輯表達(dá)式,但也可以是其他運(yùn)算表達(dá)式。當(dāng)表達(dá)式的值為零時(shí)
2、,表示條件為假;非零時(shí),表示條件為真。 3循環(huán)體可以是一條簡(jiǎn)單可執(zhí)行語(yǔ)句,也可以是復(fù)合語(yǔ)句。4如果第一次計(jì)算時(shí)表達(dá)式的值就為0,則循環(huán)語(yǔ)句一次也不被執(zhí)行,流程直接跳過(guò)While語(yǔ)句,執(zhí)行下一條語(yǔ)句。重點(diǎn)提示:while型循環(huán)語(yǔ)句中循環(huán)體的執(zhí)行次數(shù)可以從0到無(wú)窮。若第一次計(jì)算表達(dá)式的值為0,則循環(huán)體執(zhí)行0次;若表達(dá)式恒為真,則陷入死循環(huán)。 5.1.2 while循環(huán)的執(zhí)行過(guò)程while循環(huán)的執(zhí)行過(guò)程是:計(jì)算while后表達(dá)式的值,當(dāng)值為非零時(shí),執(zhí)行循環(huán)體中的語(yǔ)句;當(dāng)值為零時(shí),退出while循環(huán)。 注意:進(jìn)入while循環(huán)后,一定要有能使此表達(dá)式的值變?yōu)?的操作,否則,循環(huán)將會(huì)無(wú)限制的進(jìn)行下去,即
3、進(jìn)入死循環(huán)。在程序設(shè)計(jì)中,這個(gè)是不允許出現(xiàn)的。例如:計(jì)算1+2+3+100。main() int i,sum=0; i=1; while(i100時(shí),循環(huán)條件就不滿足,循環(huán)到此結(jié)束。如果無(wú)此語(yǔ)句,則i的值一直不變,循環(huán)永不結(jié)束,這就稱為“死循環(huán)”。在程序設(shè)計(jì)中,是不允許死循環(huán)出現(xiàn)的。重點(diǎn)提示:在循環(huán)體中應(yīng)有使循環(huán)趨于結(jié)束的語(yǔ)句。在程序設(shè)計(jì)中,是不允許死循環(huán)出現(xiàn)的。 5.2 do-while語(yǔ)句和用do-while語(yǔ)句構(gòu)成的循環(huán)結(jié)構(gòu)5.2.1 do-while語(yǔ)句構(gòu)成的循環(huán)結(jié)構(gòu) do-while是另一種循環(huán)結(jié)構(gòu),它的一般形式為: do 循環(huán)語(yǔ)句;while(表達(dá)式); 以下是幾點(diǎn)說(shuō)明:1do是C
4、語(yǔ)言的關(guān)鍵字,必須和while聯(lián)合使用。2在while(表達(dá)式)后的分號(hào)“;”不可丟,它表示do-while語(yǔ)句的結(jié)束。3while后括號(hào)中的表達(dá)式可以是任意合法的表達(dá)式,由它來(lái)控制循環(huán)是否執(zhí)行。4do-while之間的循環(huán)體可以是一條可執(zhí)行語(yǔ)句也可以是由“”構(gòu)成的符合語(yǔ)句。 5.2.2 do-while循環(huán)的執(zhí)行過(guò)程do-while語(yǔ)句的執(zhí)行過(guò)程是:先執(zhí)行一次指定的循環(huán)語(yǔ)句,然后判斷表達(dá)式的值,若表達(dá)式的值為非0,再返回重新執(zhí)行循環(huán)語(yǔ)句,如此重復(fù),直到表達(dá)式的值為0時(shí)才跳出循環(huán)語(yǔ)句,執(zhí)行下一條語(yǔ)句;若表達(dá)式的值為0,則不再返回重新執(zhí)行循環(huán)語(yǔ)句,直接退出循環(huán)語(yǔ)句,執(zhí)行下一條語(yǔ)句。如圖5.1(b
5、)所示。do while語(yǔ)句的特點(diǎn)是:先執(zhí)行語(yǔ)句,后判斷表達(dá)式的值。故do While語(yǔ)句又稱“直到型”循環(huán)結(jié)構(gòu)。由于是先執(zhí)行后判斷,因此do while語(yǔ)句的循環(huán)語(yǔ)句至少被執(zhí)行一次。注意:while圓括號(hào)后面有一個(gè)分號(hào)“;”,書寫時(shí)不能丟。 例如:用do while循環(huán)結(jié)構(gòu)來(lái)計(jì)算1+2+3+100。main() int i,sum=0; i=1; do sum+=i; i+; while(i=100); printf(dn,sum);程序運(yùn)行結(jié)果為:5050 可以看出,此例的結(jié)果與上節(jié)的例程結(jié)果是完全相同的,也就是說(shuō),對(duì)同一問(wèn)題既可以用while語(yǔ)句來(lái)處理,也可用do while語(yǔ)句來(lái)處理。
6、在一般情況下,用while語(yǔ)句和do while語(yǔ)句處理同一問(wèn)題時(shí),若二者的循環(huán)體一樣,運(yùn)行結(jié)果也就一樣。但當(dāng)while后面表達(dá)式的值一開(kāi)始就為0時(shí),兩種循環(huán)結(jié)構(gòu)的結(jié)果是不相同的。重點(diǎn)提示:do-while語(yǔ)句先執(zhí)行語(yǔ)句,后判斷表達(dá)式的值。故do-while語(yǔ)句又稱“直到型”循環(huán)結(jié)構(gòu)。由于是先執(zhí)行后判斷,因此do-while語(yǔ)句的循環(huán)語(yǔ)句至少被執(zhí)行一次。 5.3 for語(yǔ)句和用for語(yǔ)句構(gòu)成的循環(huán)結(jié)構(gòu)5.3.1 for語(yǔ)句構(gòu)成的循環(huán)結(jié)構(gòu)for語(yǔ)句的一般形式為:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)語(yǔ)句;以下是幾點(diǎn)說(shuō)明:1表達(dá)式1一般為賦值表達(dá)式,用于進(jìn)入循環(huán)之前給循環(huán)變量賦初值。2表達(dá)式2
7、一般為關(guān)系表達(dá)式或邏輯表達(dá)式,用于執(zhí)行循環(huán)的條件判定,它與while、do while循環(huán)中的表達(dá)式作用完全相同。3表達(dá)式3一般為賦值表達(dá)式或自增、自減表達(dá)式,用于修改循環(huán)變量的值。 for循環(huán)結(jié)構(gòu)是幾乎所有高級(jí)語(yǔ)言都提供的循環(huán)控制結(jié)構(gòu)。但C語(yǔ)言中的for語(yǔ)句使用最為靈活,它不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,因而它完全可以代替while語(yǔ)句和do while語(yǔ)句。重點(diǎn)提示:表達(dá)式1、表達(dá)式2、表達(dá)式3都必須為for語(yǔ)句規(guī)定的合法的表達(dá)式。 for語(yǔ)句的執(zhí)行過(guò)程是: 先計(jì)算表達(dá)式1的值。 再計(jì)算表達(dá)式2的值,若其值為真,則執(zhí)行循環(huán)體一次;否
8、則跳轉(zhuǎn)第步。 然后計(jì)算表達(dá)式3的值。 轉(zhuǎn)回上面第步。 結(jié)束循環(huán),執(zhí)行for語(yǔ)句下面一個(gè)語(yǔ)句。5.3.2 for循環(huán)執(zhí)行過(guò)程 圖5.2 for語(yǔ)句的執(zhí)行流程圖重點(diǎn)提示:在整個(gè)for語(yǔ)句中,表達(dá)式1只計(jì)算一次,表達(dá)式2和表達(dá)式3則可能計(jì)算多次。循環(huán)體可能多次執(zhí)行,也可能一次都不執(zhí)行。 5.3.3 有關(guān)for語(yǔ)句的說(shuō)明(1)for語(yǔ)句的一般形式中的“表達(dá)式1”可以省略,即:for(;表達(dá)式2;表達(dá)式3) 循環(huán)語(yǔ)句;但注意省略表達(dá)式1時(shí),其后的分號(hào)不能省略。此時(shí),應(yīng)在for語(yǔ)句之前給循環(huán)變量賦初值。(2)如果省略表達(dá)式2,即:for(表達(dá)式1;表達(dá)式3) 循環(huán)語(yǔ)句;則表示表達(dá)式2的值始終為真,循環(huán)將無(wú)
9、終止地進(jìn)行下去。例如:for(i=1;i+) printf(%d,i);將無(wú)限循環(huán)輸出1,2,3,4,5,6, (3)如果省略表達(dá)式3,即:for(表達(dá)式1;表達(dá)式2;) 循環(huán)語(yǔ)句;此時(shí),也將產(chǎn)生一個(gè)無(wú)窮循環(huán)。因此,程序設(shè)計(jì)者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束,可以將循環(huán)變量的修改部分(即表達(dá)式3)放在循環(huán)語(yǔ)句中控制。例如:for(i=1;i=100;) sum+=i; i+;上述for語(yǔ)句中沒(méi)有表達(dá)式3,而是將表達(dá)式3(i+)放在循環(huán)語(yǔ)句中,作用相同,都能使用循環(huán)正常結(jié)束。注意表達(dá)式2后面的分號(hào)不能省略。(4)也可以同時(shí)省略表達(dá)式1和表達(dá)式3,即:for(;表達(dá)式2;) 循環(huán)語(yǔ)句;也即省略了循環(huán)的
10、初值和循環(huán)變量的修改部分,此時(shí)完全等價(jià)于while 語(yǔ)句。 (5)同時(shí)省略表達(dá)式1、表達(dá)式2和表達(dá)式3,即:for(;) 循環(huán)語(yǔ)句; 相當(dāng)于賦循環(huán)變量的初值,循環(huán)控制條件始終為真,不修改循環(huán)變量,故循環(huán)將無(wú)終止地進(jìn)行下去。(6)在for語(yǔ)句中,表達(dá)式1和表達(dá)式3不僅可以使用簡(jiǎn)單表達(dá)式,也可以使用逗號(hào)表達(dá)式,即包含一個(gè)以上的簡(jiǎn)單表達(dá)式,中間用逗號(hào)間隔。在逗號(hào)表達(dá)式內(nèi)按自左至右求解,整個(gè)表達(dá)式的值為其中最右邊的表達(dá)式的值。例如: for(i=1;i=100;i+,sum=sum+i) 相當(dāng)于 for(i=1;i=100;i+) sum=sum+i;(7)在for語(yǔ)句中,表達(dá)式一般為關(guān)系表達(dá)式或邏輯
11、表達(dá)式,但也可以是其他表達(dá)式(如字符表達(dá)式、數(shù)值表達(dá)式)。 (8)for語(yǔ)句的循環(huán)語(yǔ)句可以是空語(yǔ)句??照Z(yǔ)句用來(lái)實(shí)現(xiàn)延時(shí),即在程序執(zhí)行中等待一定的時(shí)間。如下為延時(shí)程序的例子:for(i=1;i=1000;i+);注意以上語(yǔ)句最后的分號(hào)不能省略,它代表一個(gè)空語(yǔ)句。例如:用for循環(huán)結(jié)構(gòu)來(lái)計(jì)算1+2+3+100。main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(%dn,sum);程序運(yùn)行結(jié)果為:5050 可以看出,此例的結(jié)果前兩例是完全相同的。顯然,用for語(yǔ)句簡(jiǎn)單、方便。重點(diǎn)提示:for語(yǔ)句中的表達(dá)式可以部分或全部省略,但兩個(gè)分號(hào)不能省略,且
12、三個(gè)表達(dá)式均省略時(shí),循環(huán)將會(huì)無(wú)限制執(zhí)行,而形成死循環(huán)。因此,編寫程序時(shí),在for后面的一對(duì)圓括號(hào)內(nèi),應(yīng)只含有能對(duì)循環(huán)進(jìn)行控制的表達(dá)式,其它的操作盡量放在循環(huán)體內(nèi)完成。 5.4 循環(huán)結(jié)構(gòu)的嵌套1循環(huán)嵌套的形式在一個(gè)循環(huán)體內(nèi)又完整地包含了另一個(gè)循環(huán),稱為循環(huán)嵌套。循環(huán)的嵌套可以是多層,但每一層循環(huán)在邏輯上必須是完整的。例如以下幾種形式的二重嵌套。 while與while二重嵌套 while() while() do while與do while二重嵌套dodo while(); while(); for與for二重嵌套for(;)for(;) while與while二重嵌套 2關(guān)于循環(huán)嵌套的幾點(diǎn)說(shuō)
13、明(1)三種循環(huán)語(yǔ)句不僅各自可以嵌套,而且還可以互相嵌套。例如: while與do while二重嵌套while() do while; while與for二重嵌套while() for(;) do while與for二重嵌套do for(;) while(); (2)使用嵌套時(shí),應(yīng)注意一個(gè)循環(huán)結(jié)構(gòu)應(yīng)完整地嵌套在另一個(gè)循環(huán)體內(nèi),不允許循環(huán)體間交叉。例如以下循環(huán)結(jié)構(gòu)是不正確的:while() do while();(3)除了上述二重嵌套外,還可以有三重嵌套、四重嵌套等多層嵌套。(4)嵌套的外循環(huán)和內(nèi)循環(huán)的循環(huán)控制變量不得同名,但并列的內(nèi)、外循環(huán)允許有同名的循環(huán)控制變量。例如以下為合法的循環(huán)結(jié)構(gòu):
14、for(j=1;j=10;j+) for(i=1;i=10;i+) for(i=1;i=10;i+) 3循環(huán)嵌套程序舉例利用雙層for循環(huán)結(jié)構(gòu)打印出99乘法表。main() int i,j; for(i=1;i10;i+) printf(%5d,i); printf(n); for(i=1;i=46;i+) printf(-); printf(n); for(i=1;i10;i+) for(j=1;j=9;j+) printf(%5d,i*j); printf(n); 程序運(yùn)行結(jié)果為: 1 2 3 4 5 6 7 8 9- 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14
15、16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81 (1)第45行和第78行為兩個(gè)并列的for循環(huán)結(jié)構(gòu),作用是輸出運(yùn)行結(jié)果的第1行和第2行。(2)第6行和第9行的“printf(n);”語(yǔ)句作用是輸出一行后進(jìn)行換行處理。(3)第1014行為二重嵌套for循環(huán)結(jié)構(gòu),作用是打印乘法表,
16、其中第14行的作用是每次退出內(nèi)循環(huán)之時(shí),即每次輸出一行完畢后進(jìn)行換行處理。重點(diǎn)提示:在循環(huán)嵌套中,內(nèi)嵌的第一個(gè)for循環(huán)的結(jié)束條件和外循環(huán)的控制變量是有關(guān)的,而最里面的for循環(huán)的循環(huán)結(jié)束條件是固定不變的。 5.5 break和continue語(yǔ)句在循環(huán)體中的作用5.5.1 break語(yǔ)句在第四章中我們介紹過(guò),使用break語(yǔ)句可以使流程跳出switch語(yǔ)句體,在循環(huán)結(jié)構(gòu)中,也可以使用break語(yǔ)句使流程跳出本層循環(huán)體,從而提前結(jié)束本層循環(huán)。break語(yǔ)句的一般形式為: break; 關(guān)于break語(yǔ)句有以下幾點(diǎn)說(shuō)明:(1)break語(yǔ)句不能用于循環(huán)語(yǔ)句和switch語(yǔ)句之外的任何其他語(yǔ)句中。
17、(2)break語(yǔ)句只能用于循環(huán)體內(nèi),不能用在循環(huán)語(yǔ)句上。如for(i=1;i10;break,i+)是不正確的。(3)break語(yǔ)句只能跳出一層循環(huán),即從當(dāng)前循環(huán)層中跳出。如果要跳出多層循環(huán),可使用goto語(yǔ)句。 例如:設(shè)計(jì)一個(gè)程序,求能同時(shí)滿足除以3余1、除以5余3、除以7余5、除以9余7的最小正整數(shù)。main() int i; for(i=1;i+) if(i%3= =1 printf(%dn,i); 程序運(yùn)行結(jié)果為:313由于此題無(wú)法確定循環(huán)的條件和循環(huán)次數(shù),因此應(yīng)采用無(wú)限循環(huán)配以break語(yǔ)句的方法。重點(diǎn)提示:當(dāng)break語(yǔ)句出現(xiàn)在循環(huán)體中的switch語(yǔ)句體內(nèi)時(shí),其作用只是跳出該s
18、witch語(yǔ)句體,當(dāng)break語(yǔ)句出現(xiàn)在循環(huán)體中,但并不在 switch語(yǔ)句體內(nèi)時(shí),則在執(zhí)行break后,跳出本層循環(huán)。 5.5.2 continue語(yǔ)句1continue語(yǔ)句的一般形式continue語(yǔ)句的作用是結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue語(yǔ)句之后的語(yǔ)句,而是跳轉(zhuǎn)到循環(huán)的開(kāi)始處,進(jìn)行下一次是否執(zhí)行循環(huán)的判定。它的一般形式為:continue;2關(guān)于continue語(yǔ)句的幾點(diǎn)說(shuō)明(1)continue語(yǔ)句只是結(jié)束循環(huán)結(jié)構(gòu)中的本次循環(huán),并非跳出整個(gè)循環(huán)過(guò)程。具體說(shuō):對(duì)while和dowhile語(yǔ)句,遇continue語(yǔ)句后,轉(zhuǎn)向執(zhí)行while之后圓括號(hào)內(nèi)的條件表達(dá)式的判斷;對(duì)
19、for語(yǔ)句,遇continue語(yǔ)句后,轉(zhuǎn)向執(zhí)行表達(dá)式3。(2)執(zhí)行continue語(yǔ)句并沒(méi)有使整個(gè)循環(huán)終止。(3)continue語(yǔ)句與break語(yǔ)句有本質(zhì)的區(qū)別:continue語(yǔ)句只是結(jié)束本次循環(huán),而不終止整個(gè)循環(huán)的執(zhí)行;而break語(yǔ)句的作用則是強(qiáng)制終止整個(gè)循環(huán)過(guò)程。 3continue語(yǔ)句與break語(yǔ)句的區(qū)別例如:打印出數(shù)字010,但跳過(guò)(即不輸出)數(shù)字5。main() int i; for(i=0;i=10;i+) if(i=5) continue; printf(%5d,i); 程序運(yùn)行結(jié)果為:0 1 2 3 4 6 7 8 9 10 (1)當(dāng)i等于5時(shí)執(zhí)行continue語(yǔ)句,
20、它的作用是終止本次循環(huán),即不再執(zhí)行continue后面的語(yǔ)句,故不輸出5,而是轉(zhuǎn)轉(zhuǎn)向執(zhí)行for語(yǔ)句的表達(dá)式3,繼續(xù)進(jìn)行下一輪循環(huán)。(2)實(shí)際上,在程序中完全可以不用continue語(yǔ)句,如本例中可以去掉第6、7兩行,而用下面的語(yǔ)句來(lái)代替: if(i!=5)(3)如果在本例中將第7行的“continue;”語(yǔ)句,改為“break;”語(yǔ)句,則輸出結(jié)果為:0 1 2 3 4可以清楚地看出break語(yǔ)句是終止整個(gè)循環(huán)過(guò)程,它與continue語(yǔ)句作用是截然不同的。重點(diǎn)提示:當(dāng)break語(yǔ)句出現(xiàn)在循環(huán)體中的switch語(yǔ)句體內(nèi)時(shí),其作用只是跳出該switch語(yǔ)句體,當(dāng)break語(yǔ)句出現(xiàn)在循環(huán)體中,但并不在switch語(yǔ)句體內(nèi)時(shí),則在執(zhí)行break后,跳出本層循環(huán)。
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 銷售技巧培訓(xùn)課件:接近客戶的套路總結(jié)
- 20種成交的銷售話術(shù)和技巧
- 銷售技巧:接近客戶的8種套路
- 銷售套路總結(jié)
- 房產(chǎn)銷售中的常見(jiàn)問(wèn)題及解決方法
- 銷售技巧:值得默念的成交話術(shù)
- 銷售資料:讓人舒服的35種說(shuō)話方式
- 汽車銷售績(jī)效管理規(guī)范
- 銷售技巧培訓(xùn)課件:絕對(duì)成交的銷售話術(shù)
- 頂尖銷售技巧總結(jié)
- 銷售技巧:電話營(yíng)銷十大定律
- 銷售逼單最好的二十三種技巧
- 銷售最常遇到的10大麻煩
- 銷售資料:銷售10大黃金觀念
- 銷售資料:導(dǎo)購(gòu)常用的搭訕?lè)椒?/a>