《C語(yǔ)言控制語(yǔ)句》PPT課件.ppt_第1頁(yè)
《C語(yǔ)言控制語(yǔ)句》PPT課件.ppt_第2頁(yè)
《C語(yǔ)言控制語(yǔ)句》PPT課件.ppt_第3頁(yè)
《C語(yǔ)言控制語(yǔ)句》PPT課件.ppt_第4頁(yè)
《C語(yǔ)言控制語(yǔ)句》PPT課件.ppt_第5頁(yè)
已閱讀5頁(yè),還剩31頁(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、第四章控制語(yǔ)句,(教材的第四、五章),1/36,4.1 分支語(yǔ)句 4.2 循環(huán)語(yǔ)句 4.3 其它語(yǔ)句 4.4 本章要點(diǎn)小結(jié),2/36,4.1 分支語(yǔ)句,4.1.1 if語(yǔ)句的三種形式 4.1.2 if語(yǔ)句的嵌套 4.1.3 switch(多分支)語(yǔ)句,3/36,4.1.1 if語(yǔ)句的三種形式,形式一:,if (表達(dá)式) 語(yǔ)句序列;,執(zhí)行過(guò)程:,例如:,if (xy) printf(%dn,x); printf(%dn,y);,if (ab,if (4.5) x=a;,if (ab) t=a; a=b; b=t; ,問(wèn)題:abc是否合法?,eg401.c,4/36,形式二:,if (表達(dá)式) 語(yǔ)

2、句序列1; else 語(yǔ)句序列2;,執(zhí)行過(guò)程:,例如:,if (ab) x=a; else x=b;,if (x=0) printf(%.3fn,x); else printf(%.3fn,-x),5/36,形式三:,if (表達(dá)式1) 語(yǔ)句序列1; else if (表達(dá)式2) 語(yǔ)句序列2; else if (表達(dá)式3) 語(yǔ)句序列3; else if (表達(dá)式n) 語(yǔ)句序列n; else 語(yǔ)句序列n+1;,6/36,if (x0) y=1; else if (x=0) y=0; else y=-1;,7/36,說(shuō)明:,1、表達(dá)式一般為關(guān)系表達(dá)式或邏輯表達(dá)式。但在C語(yǔ)言中它也可以是任意的數(shù)值表

3、達(dá)式。,if (3) n=1;,if (a) printf(%d,a);,if (n=3-3) x=1; else x=-1;,4、每個(gè)語(yǔ)句序列可以是一個(gè)語(yǔ)句也可以是若干個(gè)語(yǔ)句,但要構(gòu)成復(fù)合語(yǔ)句。,3、 else 只能與 if 配對(duì)使用。僅 else 本身不能單獨(dú)作為一個(gè)語(yǔ)句使用。,if (ab) t=a; a=b; b=t; ,if (a+bc ,2、每個(gè)語(yǔ)句都要以“ ;”結(jié)束,分號(hào)是語(yǔ)句的一部分。,8/36,4.1.2 if語(yǔ)句的嵌套,形式:,if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句序列2; else 語(yǔ)句序列3; else if (表達(dá)式4) 語(yǔ)句序列4; else 語(yǔ)句序列5;,在

4、if語(yǔ)句的原“語(yǔ)句序列”中又包含一個(gè)或多個(gè)if語(yǔ)句稱為if語(yǔ)句的嵌套。,當(dāng)然,語(yǔ)句序列2、3、4、5還可以是if語(yǔ)句。,例如:max=(a,b,c),if (a=b) if (a=c) max=a; else max=c; else if (b=c) max=b; else max=c;,9/36,二義性:,if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句序列2; else 語(yǔ)句序列3;,if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句序列2; else 語(yǔ)句序列3;,if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句序列2; else 語(yǔ)句序列3;,應(yīng)如何理解?,有兩種理解方式:,語(yǔ)言規(guī)定:else總是與

5、它前面最近的且未曾配對(duì)的if配對(duì)。,if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句序列2; else 語(yǔ)句序列3; ,if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句序列2; else 語(yǔ)句序列3;,10/36,4.1.3 switch(多分支)語(yǔ)句,1、格式:switch (表達(dá)式) case 常量表達(dá)式1 : 語(yǔ)句1; break; case 常量表達(dá)式2 : 語(yǔ)句2;break; case 常量表達(dá)式n : 語(yǔ)句n ;break; default: 語(yǔ)句 n+1;break; ,2、功能:先計(jì)算表達(dá)式的值,測(cè)試該值是否與某常量表達(dá)式的值相同。 、若有相同者,流程轉(zhuǎn)向其后面的語(yǔ)句執(zhí)行 、若無(wú),再

6、看有沒(méi)有default部分:若有default,則執(zhí)行其后面的語(yǔ)句; 若無(wú)default,則switch語(yǔ)句什么也不做,流程轉(zhuǎn)向其后繼語(yǔ)句。,3、 例:讀入1到7之間的某個(gè)數(shù),輸出一個(gè)星期中相應(yīng)的某一天的單詞。,eg404.c,11/36,4、說(shuō)明:,、 switch語(yǔ)句的執(zhí)行部分是由若干個(gè)case語(yǔ)句和一個(gè)可缺省的default語(yǔ)句組成的復(fù)合語(yǔ)句,整個(gè)語(yǔ)句要用大括號(hào)括起來(lái);,、switch后面括號(hào)內(nèi)的表達(dá)式可以是整型也可以是字符型或枚舉類型;,、每個(gè)case后的常量表達(dá)式只起語(yǔ)句標(biāo)號(hào)的作用,所以當(dāng)表達(dá)式的值與某一個(gè)case后的常量表達(dá)式的值相等時(shí),就執(zhí)行相應(yīng)的語(yǔ)句,它后面若沒(méi)有break語(yǔ)句

7、,程序就自動(dòng)地執(zhí)行下一個(gè)case之后的語(yǔ)句,所以每個(gè)case之后通常都有一個(gè)break,使流程跳出switch語(yǔ)句;,、各個(gè)case的常量表達(dá)式的值必須互不相同;,、各個(gè)case和default的出現(xiàn)次序是任意的,出現(xiàn)次序不影響執(zhí)行結(jié)果;一般常量表達(dá)式按升序(或降序)排列,并將default放在所有case語(yǔ)句之后;,、各個(gè)case后的語(yǔ)句可以是多個(gè)語(yǔ)句,且不用花括號(hào)括起來(lái);,、switch語(yǔ)句允許幾種情況執(zhí)行相同的語(yǔ)句;,case 6 : case 7 : printf(“Resetn”); break;,但不能寫成:case 6,7: printf(“Resetn”); break;,5、

8、例:輸入一個(gè)年號(hào)year和月號(hào)month,計(jì)算該月有幾天,并輸出結(jié)果。,eg404.c,12/36,4.2 循環(huán)語(yǔ)句,4.2.1 while語(yǔ)句 4.2.2 do-while語(yǔ)句 4.2.3 for語(yǔ)句 4.2.4 循環(huán)嵌套 4.2.5 幾種循環(huán)的比較,13/36,4.2.1 while語(yǔ)句,1、格式:while (表達(dá)式) 循環(huán)體;,2、功能:首先計(jì)算表達(dá)式的值,若表達(dá)式成立(非0),執(zhí)行一遍循環(huán)體,再判斷表達(dá)式,若成立再執(zhí)行循環(huán)體當(dāng)表達(dá)式不成立(其值為0)時(shí)退出循環(huán),跳轉(zhuǎn)到循環(huán)體之后的語(yǔ)句執(zhí)行。,eg406.c,3、特點(diǎn):先判斷表達(dá)式,然后執(zhí)行循環(huán)體。若表達(dá)式一開(kāi)始就不成立,則循環(huán)體一次也

9、不執(zhí)行。,4、注意:(1)、循環(huán)部分為多個(gè)語(yǔ)句時(shí),必須用大括號(hào)構(gòu)成復(fù)合語(yǔ)句; (2)、循環(huán)體中應(yīng)有語(yǔ)句修改控制條件,5、例:計(jì)算 sum=1+2+3+100,14/36,4.2.2 do-while語(yǔ)句,1、格式:do 循環(huán)體; while (表達(dá)式);,2、功能:先執(zhí)行一遍循環(huán)體,再判斷表達(dá)式,當(dāng)表達(dá)式的值為非0(真)時(shí),返回重新執(zhí)行循環(huán)體;如此反復(fù),直到表達(dá)式的值為0(假)時(shí)退出循環(huán)。,eg407.c,3、特點(diǎn):先執(zhí)行循環(huán)體,后判斷循環(huán)條件(表達(dá)式)是否成立,即循環(huán)體至少執(zhí)行一次。,4、推薦書(shū)寫格式: do while();,5、例:計(jì)算 sum=1+2+3+100,15/36,對(duì)于同一個(gè)

10、問(wèn)題既可以用while語(yǔ)句處理,也可以用do-while語(yǔ)句處理。do-while語(yǔ)句結(jié)構(gòu)可以轉(zhuǎn)換成while結(jié)構(gòu)。,do-while語(yǔ)句流程圖可以改寫為:,可見(jiàn),do-while結(jié)構(gòu)是由一個(gè)語(yǔ)句加一個(gè)while結(jié)構(gòu)構(gòu)成的。,一般情況下,用while語(yǔ)句和do-while語(yǔ)句處理同一問(wèn)題時(shí),若二者的循環(huán)體一樣,則結(jié)果也一樣。但是如果while后面的表達(dá)式一開(kāi)始就為假(0)時(shí),兩種循環(huán)的結(jié)果是不同的。,例:計(jì)算: (分別用while和do-while實(shí)現(xiàn)),結(jié)論:當(dāng)while后面的表達(dá)式的第一次的值為“真”時(shí),兩種循環(huán)的結(jié)果相同。否則,二者結(jié)果不相同(指二者具有相同的循環(huán)體的情況)。,eg408

11、.c、eg409.c,16/36,4.2.3 for語(yǔ)句,1、格式:,for (表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體;,其中:表達(dá)式1規(guī)定循環(huán)控制變量的初始值 表達(dá)式2指出循環(huán)條件表達(dá)式 表達(dá)式3修改循環(huán)變量的值,2、功能: 先求解表達(dá)式1,給循環(huán)控制變量賦初值 求解表達(dá)式2,若為真(非0),執(zhí)行循環(huán)體 求解表達(dá)式3,它改變了表達(dá)式2中的某個(gè)變量 返回 直到條件為假(0),退出循環(huán),for語(yǔ)句最易理解的形式: for (循環(huán)控制變量賦初值;循環(huán)條件;循環(huán)變量增值) 循環(huán)體;,3、例:計(jì)算 sum=1+2+3+100,eg410.c,17/36,for (i=1; i=100;i+) sum=

12、sum+i;,i=1; while ( i=100) sum=sum+i; i+; ,for語(yǔ)句的功能和執(zhí)行過(guò)程與while相似。在上例中,若把給循環(huán)控制變量賦初值的工作放在語(yǔ)句之外,把循環(huán)變量的修改放在循環(huán)體內(nèi),則跟while循環(huán)相同,所以for 語(yǔ)句的一般形式可以用while表示成:,表達(dá)式1; while (表達(dá)式2) 語(yǔ)句序列; 表達(dá)式3; ,18/36,說(shuō)明:,、for語(yǔ)句的三個(gè)表達(dá)式都可以缺省,但兩個(gè)分號(hào)不能缺??;,、若在for語(yǔ)句之前已經(jīng)對(duì)循環(huán)控制變量賦初值,則表達(dá)式1可以缺??;,例: i=1; for ( ; i=100; i+) sum=sum+i;,for (i=1; i=

13、100; i+) sum=sum+i;,、通常不缺省表達(dá)式2;有時(shí)缺省表達(dá)式2,即不判斷循環(huán)條件,循環(huán)將無(wú)終止的執(zhí)行,即認(rèn)為表達(dá)式2始終為真;在循環(huán)體內(nèi)用if和break控制循環(huán)結(jié)束。,if (條件) break;,for (i=1; ; i+) sum=sum+i;,i=1; while (1) sum=sum+i; i+; ,19/36,、表達(dá)式3也可以缺省,但應(yīng)設(shè)法修改循環(huán)控制變量,保證程序正常結(jié)束。,for (i=1; i=100; ) sum=sum+i; i+; ,、可以省略表達(dá)式1和表達(dá)式3,即只給循環(huán)條件。,如:for ( ;i=100; ) sum=sum+i; i+; ,w

14、hile (i=100) sum=sum+i; i+; ,此時(shí),完全等同于while語(yǔ)句。,、3個(gè)表達(dá)式都可以省略,如:,for ( ; ; ) 循環(huán)體;,while (1) 循環(huán)體;,將無(wú)終止的執(zhí)行循環(huán)。從語(yǔ)法上講是正確的,但一般沒(méi)有實(shí)際意義。,20/36,for語(yǔ)句表達(dá)式的計(jì)算:,、for語(yǔ)句中的表達(dá)式1和表達(dá)式3可以由一個(gè)或多個(gè)賦值表達(dá)式組成,當(dāng)為多個(gè)表達(dá)式時(shí),各表達(dá)式之間要用逗號(hào)運(yùn)算符(即組成逗號(hào)表達(dá)式)。,for (sum=0,i=1; i=100; i+) sum=sum+i;,for (i=0,j=100; i=j; i+,j-) k=i+j; printf(i=%d,j=%d,

15、k=%dn,i,j,k);,i=? j=? k=?,#include stdio.h main( ) int a,b,c; for (a=0,b=50; ab; a+,b-) printf(a=%d, b=%dn,a,b); c=a+b; printf(a=%d,b=%d,c=%dn,a,b,c); ,a=? b=? c=?,、for語(yǔ)句中的表達(dá)式1和表達(dá)式3通常與循環(huán)變量有關(guān),但也可以無(wú)關(guān)。,eg411.c,21/36,、for語(yǔ)句中的表達(dá)式1和表達(dá)式3通常與循環(huán)變量有關(guān),但也可以無(wú)關(guān)。,#include stdio.h main( ) int i,sum; i=1; for (sum=0;

16、 i=100; sum=sum+i) i+; printf(sum=%dn,sum); ,i=? sum=?,、for語(yǔ)句中的表達(dá)式2通常為關(guān)系表達(dá)式或邏輯表達(dá)式,但也可以是數(shù)值或字符表達(dá)式,判斷時(shí),只要其值非0,就執(zhí)行循環(huán)體,為0則退出循環(huán)。,for (i=0; (ch=getchar( )!=n; i+=ch) ;,eg412.c、eg413.c,22/36,4.2.4 循環(huán)嵌套,一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)嵌套。內(nèi)層的循環(huán)中還可以嵌套循環(huán),構(gòu)成多重循環(huán)。,三種循環(huán)可以相互嵌套。,while ( ) while ( ) ,for ( ; ; ) for ( ; ; )

17、,do do while ( ); while ( );,while ( ) for ( ; ; ) ,for ( ; ; ) do while( ); ,while ( ) do while( ); ,23/36,例:打印一張九九表。,for (i=1; i=9; i+),for (j=1; j= ; j+),i,printf(%4d, );,i*j,printf(n);,eg414.c,24/36,在設(shè)計(jì)循環(huán)嵌套時(shí)要注意:應(yīng)該“在一個(gè)循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán)結(jié)構(gòu)”,不論嵌套次數(shù)多少,要遵守這個(gè)原則。,while ( ) do for ( ; ; ) while( ); ,do for

18、( ; ; ) while( ); ,25/36,、C語(yǔ)言中的三種循環(huán)結(jié)構(gòu)都由表達(dá)式控制執(zhí)行一個(gè)循環(huán)體,一般情況下可以相互代替;,、while和do-while循環(huán),只在while后面指定循環(huán)條件; for循環(huán)可以在表達(dá)式3中包含使循環(huán)趨于結(jié)束的操作;,、用while和do-while循環(huán)時(shí),循環(huán)變量初始化的操作應(yīng)在while和do-while語(yǔ)句之前完成,而for語(yǔ)句可以在表達(dá)式1中實(shí)現(xiàn)循環(huán)變量的初始化;,、當(dāng)循環(huán)次數(shù)及控制條件要在程序運(yùn)行過(guò)程中確定時(shí),選用while和do-while語(yǔ)句;,26/36,、在初值、增量及控制條件明顯,或循環(huán)次數(shù)已經(jīng)給定的情況下,選用for循環(huán);,、在循環(huán)的執(zhí)

19、行過(guò)程中,應(yīng)不斷的改變循環(huán)控制表達(dá)式的值,以便逐步形成使它為0的條件,否則出現(xiàn)死循環(huán);,、三種循環(huán)可以相互嵌套,形成多重循環(huán),外循環(huán)可以包含多個(gè)或多重內(nèi)循環(huán),循環(huán)之間可以并列但不能相交,并列的循環(huán)控制變量可以同名,但嵌套的循環(huán)控制變量不能同名;,、不允許用其它的控制語(yǔ)句把程序流程從循環(huán)體外轉(zhuǎn)入循環(huán)體內(nèi),但必要時(shí)可以用break等語(yǔ)句把流程從循環(huán)體內(nèi)轉(zhuǎn)到循環(huán)體外。,27/36,4.3 其它語(yǔ)句,4.3.1 break語(yǔ)句 4.3.2 continue語(yǔ)句 4.3.3 空語(yǔ)句,28/36,1、格式:,break;,2、功能:在循環(huán)體或switch語(yǔ)句中,執(zhí)行到break語(yǔ)句時(shí),終止當(dāng)前語(yǔ)句的執(zhí)行,

20、程序流程轉(zhuǎn)移到當(dāng)前循環(huán)語(yǔ)句或switch語(yǔ)句的后繼語(yǔ)句去執(zhí)行,3、說(shuō)明:,eg416.c,、若是多重循環(huán),break只能使流程跳出離break最近的一層;,、break只用于switch語(yǔ)句和循環(huán)語(yǔ)句;,4、例:計(jì)算 r=1到 r=10時(shí)的圓面積,直到面積大于100為止,4.3.1 break語(yǔ)句,29/36,1、格式:,continue;,2、功能:在循環(huán)體中,當(dāng)執(zhí)行到continue語(yǔ)句時(shí),跳過(guò)循環(huán)體內(nèi)位于其后的其它語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定;即“提前結(jié)束本次循環(huán)”,3、說(shuō)明:,eg417.c,、continue語(yǔ)句只能用于循環(huán)語(yǔ)句中,它是一種具有特殊功能的轉(zhuǎn)移語(yǔ)句;,、con

21、tinue與break不同:continue語(yǔ)句只結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)的執(zhí)行;而break語(yǔ)句則是結(jié)束整個(gè)循環(huán),不再判斷循環(huán)條件是否成立。,4、例:把100到200之間能被3整除的數(shù)輸出,4.3.2 continue語(yǔ)句,30/36,1、格式:,; (僅由一個(gè)分號(hào)“;”組成),2、功能:當(dāng)從語(yǔ)法上需要一個(gè)語(yǔ)句,而從語(yǔ)義上不需要任何操作時(shí),便可以用空語(yǔ)句。,3、例如:,在循環(huán)語(yǔ)句中提供一個(gè)不需要執(zhí)行操作的空語(yǔ)句體。,for (sum=0,i=1; i=100; sum+=i,i+) ;,for (i=1; i=10000;i+) ;,4.3.3 空語(yǔ)句,4、注意:要將空語(yǔ)句與簡(jiǎn)單語(yǔ)句中的有效組成

溫馨提示

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