全國計算機等級考試二級C第四章 選擇結(jié)構(gòu)
《全國計算機等級考試二級C第四章 選擇結(jié)構(gòu)》由會員分享,可在線閱讀,更多相關(guān)《全國計算機等級考試二級C第四章 選擇結(jié)構(gòu)(57頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、全國計算機等級考試二級全國計算機等級考試二級C第四章第四章 選擇結(jié)構(gòu)選擇結(jié)構(gòu)2010年年10月月- 2011年年3月月第四章第四章 選擇結(jié)構(gòu)選擇結(jié)構(gòu)4.1 4.1 關(guān)系運算和邏輯運算關(guān)系運算和邏輯運算4.2 if4.2 if語句和語句和if if語句構(gòu)成的選擇結(jié)構(gòu)語句構(gòu)成的選擇結(jié)構(gòu)4.3 4.3 條件表達式構(gòu)成的選擇結(jié)構(gòu)條件表達式構(gòu)成的選擇結(jié)構(gòu)4.4switch4.4switch語句以及語句以及switchswitch語句和語句和breakbreak語語句構(gòu)成的選擇結(jié)構(gòu)句構(gòu)成的選擇結(jié)構(gòu)4.5 4.5 語句標(biāo)號和語句標(biāo)號和gotogoto語句語句 C語言提供了可以進行邏輯判斷的若干選擇語句,由這
2、此選擇語句可構(gòu)成程序中的選擇結(jié)構(gòu),通常又稱為分支結(jié)構(gòu)。選擇結(jié)構(gòu)4.1.1 C4.1.1 C語言的邏輯值語言的邏輯值 關(guān)系表達式和邏輯表達式的運算結(jié)果都會得到一個邏輯值。關(guān)系表達式和邏輯表達式的運算結(jié)果都會得到一個邏輯值。邏輯值只有兩個,分別用邏輯值只有兩個,分別用“真真”和和“假假”來表示。在來表示。在C C語言中,語言中,沒有專門的沒有專門的“邏輯值邏輯值”,而是用非,而是用非0 0表示表示“真真”,用,用0 0表示表示“假假”。4.1 4.1 關(guān)系運算和邏輯運算關(guān)系運算和邏輯運算 4.1.24.1.2關(guān)系運算符和表達式關(guān)系運算符和表達式 在程序中經(jīng)常需要比較兩個量的大小關(guān)系,以決定程序下在
3、程序中經(jīng)常需要比較兩個量的大小關(guān)系,以決定程序下一步的工作。比較兩個量的運算符稱為關(guān)系運算符。一步的工作。比較兩個量的運算符稱為關(guān)系運算符。 關(guān)系運算符是雙目運算符,具有自左至右的結(jié)合性。關(guān)系運算符是雙目運算符,具有自左至右的結(jié)合性。關(guān)系運算符及其優(yōu)先次序1. (小于)2. (大于)4. = (大于或等于)5. = (等于)6. != (不等于)4.1.2.1 C4.1.2.1 C語言的關(guān)系運算符語言的關(guān)系運算符優(yōu)先級相同(高)優(yōu)先級相同(高)優(yōu)先級相同(低)優(yōu)先級相同(低)說明:關(guān)系運算符的優(yōu)先級低于算術(shù)運算符關(guān)系運算符的優(yōu)先級高于賦值運算符4.1.2.2.關(guān)系表達式用關(guān)系運算符將兩個表達式
4、(可以是算術(shù)表達式或 關(guān)系表達式,邏輯表達式,賦值表達式,字符表達式) 接起來的式子,稱關(guān)系表達式 關(guān)系表達式的一般形式為: 表達式表達式 關(guān)系運算符關(guān)系運算符 表達式表達式例:ab,a+bb+c,(a=3)(b=5),ab)(bb”的值為“真”,表達式的值為1。C C語言中沒有專用語言中沒有專用的邏輯值,的邏輯值,1 1代表代表真,真,0 0代表假代表假關(guān)系表達式舉例:a+bc-dx3/2a+1(bc)a!=(c=d) 關(guān)系表達式的值是真”和“假”,用“1”和“0”表示。如: 50的值為“真”,即為1。(a=3)(b=5)由于35不成立,故其值為假,即為0?!纠縨ain() char c=
5、k; int i=1,j=2,k=3; float x=3e+5,y=0.85; printf(%d,%dn,a+5=k+1); printf(%d,%dn,1j5,x-5.25b & cd 等價于 (ab)&(cd) !b=c|da 等價于 (!b)=c)|(dc&x+yc)&(x+y)3&84-!0 自左向右運算 1&0邏輯值為083邏輯值為1表達式值為0在邏輯表達式的求解中,并不是所有的邏輯運算符都要被執(zhí)行。(1)a&b&c 只有a為真時,才需要判斷b的值,只有a和b都為真時, 才需要判斷c的值。(2)a|b|c 只要a為真,就不必判斷b和c的值,只有a為假,才 判斷b。a和b都為假才判
6、斷c例:(m=ab)&(n=cd) 當(dāng)a=1,b=2,c=3,d=4,m和n的原值為1時,由于“ab”的值為0,因此m=0,而“n=cd”不被執(zhí)行,因此n的值不是0而仍保持原值1。 用邏輯表達式來表示閏年的條件能被4整除,但不能被100整除。能被4整除,又能被400整除答答 (year%4=0&year%100!=0)|year%400=0案案 值為真(1)是閏年,否則為非閏年。邏輯運算的值也為“真”和“假”兩種,用“1”和“0 ”來表示。其求值規(guī)則如下:1. 與運算 &:參與運算的兩個量都為真時,結(jié)果才為真,否則為假。 例如: 50 & 42 由于50為真,42也為真,相與的結(jié)果也為真。2.
7、 或運算|:參與運算的兩個量只要有一個為真,結(jié)果就為真。 兩個量都為假時,結(jié)果為假。 例如: 50|58由于50為真,相或的結(jié)果也就為真。3. 非運算!:參與運算量為真時,結(jié)果為假;參與運算量為假時,結(jié)果為真。 例如: !(50) 的結(jié)果為假。 雖然編譯在給出邏輯運算值時,以“1”代表“真”,“0 ”代表“假”。 但反過來在判斷一個量是為“真”還是為“假”時,以“0”代表“假”,以非“0”的數(shù)值作為“真”。例如:由于5和3均為非“0”因此5&3的值為“真”,即為1。 又如: 5|0的值為“真”,即為1。 邏輯運算的值邏輯運算的值【例】main()main() char c=k; char c=
8、k; int int i=1,j=2,k=3; i=1,j=2,k=3; float x=3e+5,y=0.85; float x=3e+5,y=0.85; printf printf(%d,%dn,!x(%d,%dn,!x* *!y,!x);!y,!x); printf(%d,%dn,x|i&j-3,ij&xy); printf(%d,%dn,x|i&j-3,ij&xy); printf printf(%d,%dn,i=5&c&(j=8),x+y|i+j+k);(%d,%dn,i=5&c&(j=8),x+y|i+j+k); 本例中本例中!x!x和和!y!y分別為分別為0 0,!x!x* *!
9、y!y也為也為0 0,故其輸出值為,故其輸出值為0 0。由于。由于x x為非為非0 0,故故!x!x的邏輯值為的邏輯值為0 0。對。對x| i & j-3x| i & j-3式,先計算式,先計算j-3j-3的值為非的值為非0 0,再求,再求i i & j-3& j-3的邏輯值為的邏輯值為1 1,故,故x|i&j-3x|i&j-3的邏輯值為的邏輯值為 1 1。對。對ij&xyij&xy式,由于式,由于ijij的值為的值為1 1,而,而xyxy) printf(“%d”,x); If語句的三種基本形式4.2.1 If4.2.1 If語句語句【例】 main() int a,b,max; print
10、f(n input two numbers:); scanf(%d%d,&a,&b); max=a; if (maxy) printf(“%d”,x); else printf(“%d”,y);第二種形式為基本形式【例】main() int a, b; printf(input two numbers: ); scanf(%d%d,&a,&b); if(ab) printf(max=%dn,a); else printf(max=%dn,b); 輸入兩個整數(shù),輸出其中的大數(shù)。改用if-else語句判別a,b的大小,若a大,則輸出a,否則輸出b。 前二種形式的if語句一般都用于兩個分支的情況。
11、當(dāng)有多個分支選擇時,可采用if-else-if語句,其一般形式為: (3)if(表達式1)語句1 else if(表達式2)語句2 else if(表達式3)語句3 else if(表達式m)語句m else 語句n 其語義是:依次判斷表達式的值,當(dāng)出現(xiàn)某個值為真時,則執(zhí)行其對應(yīng)的語句。然后跳到整個if語句之外繼續(xù)執(zhí)行程序。 如果所有的表達式均為假,則執(zhí)行語句n。然后繼續(xù)執(zhí)行后續(xù)程序。 if-else-if語句的執(zhí)行過程如上圖所示。第三種形式為基本形式【例】#includestdio.hmain() char c; printf(input a character: ); c=getchar(
12、); if(c=0&c=A&c=a&c500) cost=0.15; else if(number300) cost=0.10; else if(number100) cost=0.075; else if(number50) cost=0.05; else cost=0; 在使用if語句中還應(yīng)注意以下問題:1) 在三種形式的if語句中,在if關(guān)鍵字之后均為表達式。 該表達式通常是邏輯表達式或關(guān)系表達式, 但也可以是其它表達式,如賦值表達式等,甚至也可以是一個變量。例如: if(a=5) 語句; if(b) 語句;都是允許的。只要表達式的值為非0,即為“真”。如在: if(a=5);中表達式的
13、值永遠為非0,所以其后的語句總是要執(zhí)行的,當(dāng)然這種情況在程序中不一定會出現(xiàn),但在語法上是合法的。又如,有程序段: if(a=b) printf(%d,a); else printf(a=0); 本語句的語義是,把b值賦予a,如為非0則輸出該值,否則輸出“a=0”字符串。這種用法在程序中是經(jīng)常出現(xiàn)的。 2) 在if語句中,條件判斷表達式必須用括號括起來,在語句之后必須加分號。 3) 在if語句的三種形式中,所有的語句應(yīng)為單個語句,如果要想在滿足條件時執(zhí)行一組(多個)語句,則必須把這一組語句用括起來組成一個復(fù)合語句。但要注意的是在之后不能再加分號。例如: if(ab) a+; b+; else a
14、=0; b=10;if語句(例題)例例: :輸入兩個實數(shù),按代數(shù)值由小到大的順序輸出這兩個輸入兩個實數(shù),按代數(shù)值由小到大的順序輸出這兩個數(shù)。數(shù)。#includestdio#include.hvoid main()void main()float a,b,t;float a,b,t;scanfscanf(“%f,%f”,&a,&b);(“%f,%f”,&a,&b);if(ab)if(ab)t=a;t=a; a=b; a=b; b=t; b=t; printf(“%5.2f,%5.2fn”,a,b);printf(“%5.2f,%5.2fn”,a,b); ynabt=aa=bb=t例例: :輸入三
15、個數(shù)輸入三個數(shù)a,b,c,a,b,c,要求按由小到大的順序輸出。要求按由小到大的順序輸出。If ab 將a和b對換If ac 將a和c對換If bc 將b和c對換abacbca和b交換a和c交換c和b交換yyynn #include #include void main ( ) void main ( ) float a,b,c,t; float a,b,c,t; scanf(“%f,%f,%f”,&a,&b,&c); scanf(“%f,%f,%f”,&a,&b,&c); if(ab)if(ab) t=a;a=b;b=t; t=a;a=b;b=t; if(ac) if(ac) t=a;a=c
16、;c=t; t=a;a=c;c=t;if(bc) if(bc) t=b;b=c;c=t; t=b;b=c;c=t; printf(%5.2f,%5.2f,%5.2fn,a,b,c); printf(%5.2f,%5.2f,%5.2fn,a,b,c); 4.2.2嵌套的if語句一、當(dāng)if語句中的執(zhí)行語句又是if語句時,則構(gòu)成了if 語句嵌套的情形。其一般形式可表示如下: if(表達式) if語句; 或者為 if(表達式) if語句; else if語句; 在嵌套內(nèi)的if語句可能又是if-else型的,這將會出現(xiàn)多個if和多個else重疊的情況,這時要特別注意if和else的配對問題。例如: if
17、(表達式1) if(表達式2) 語句1; else 語句2;其中的else究竟是與哪一個if配對呢?應(yīng)該理解為: if(表達式1) if(表達式2) 語句1; else 語句2;還是應(yīng)理解為: if(表達式1) if(表達式2) 語句1; else 語句2; 為了避免這種二義性,語言規(guī)定,else 總是與它前面最近的if配對,因此對上述例子應(yīng)按前一種情況理解?!纠縨ain() int a,b; printf(please input A,B: ); scanf(%d%d,&a,&b); if(a!=b) if(ab) printf(ABn); else printf(AB、AB或A=B。這種
18、問題用if-else-if語句也可以完成。而且程序更加清晰。因此,在一般情況下較少使用if語句的嵌套結(jié)構(gòu)。以使程序更便于閱讀理解。匹配規(guī)則: else總是與它上面的,最近的,統(tǒng)一復(fù)合語句中的,未配對的if語句配對。例:If()if() 語句1elseif() 語句2else 語句3例:If()if() 語句1elseif() 語句2else 語句3當(dāng)當(dāng)ifif和和elseelse數(shù)目不同時,可以加數(shù)目不同時,可以加花括號花括號來確定配對關(guān)系。來確定配對關(guān)系。 -1 (x0)算法1: 算法2:輸入x 輸入x若x0,則y=-1 若x0,則y=1 若x=0,則y=0輸出y 若x0,則y=1 輸出y
19、#includevoid main() int x,y; scanf(“%d”,&x); 程序段 printf(“x=%d,y=%dn”,x,y); 上例中的程序段有四個,請判斷哪個是正確的?程序1: 程序2: If(x=0) Y=-1; if(x0) y=1; Else else y=0; If(x=0) y=0; else y=-1; Else y=1;程序3: 程序4: Y=-1; y=0; If(x!=0) if(x=0) If(x0) y=1; if(x0) y=1; Else y=0; Else y=-1;正確正確4.3 4.3 條件表達式構(gòu)成的選擇結(jié)構(gòu)條件表達式構(gòu)成的選擇結(jié)構(gòu) 如
20、果在條件語句中,只執(zhí)行單個的賦值語句時, ??墒褂脳l件表達式來實現(xiàn)。不但使程序簡潔,也提高了運行效率。 條件運算符為?和:,它是一個三目運算符,即有三個參與運算的量。格式: 表達式?表達式表達式 功能: 判斷表達式1的值,如果成立就執(zhí)行表 達式2,否則就執(zhí)行表達式3使用場合:若在語句中,當(dāng)被判別的表達式的 值為“真”或“假” 時,都執(zhí)行一個賦值語 句且向同一個變量賦值時,可以用一個 條件運算符來處理。 例: () =; ; 當(dāng)ab時將a的值賦給max,當(dāng)ab時將b的值賦給max,可以看到無論ab是否滿足,都是向同一個變量賦值。 可以用下面的條件運算符來處理: ()?; 執(zhí)行該語句的語義是:如a
21、b為真,則把a賦予max,否則把b 賦予max。使用條件表達式時,還應(yīng)注意以下幾點:1)條件運算符的運算優(yōu)先級低于關(guān)系運算符和算術(shù)運算符,但高于賦值符。因此 max=(ab)?a:b可以去掉括號而寫為 max=ab?a:b2) 條件運算符?和:是一對運算符,不能分開單獨使用。3) 條件運算符的結(jié)合方向是自右至左自右至左。例如:例如: ab?a:cd?c:dab?a:cd?c:d應(yīng)理解為應(yīng)理解為 ab?a:(cd?c:d)ab?a:(cd?c:d)這也就是條件表達式嵌套的情形,即其中的表達式這也就是條件表達式嵌套的情形,即其中的表達式3 3又是一又是一個條件表達式。個條件表達式?!纠縨ain(
22、) int a,b,max; printf(n input two numbers: ); scanf(%d%d,&a,&b); printf(max=%d,ab?a:b); 用條件表達式對上例重新編程,輸出兩個數(shù)中的大數(shù)。例:例:輸入一個字符,判別它是否大寫字母,如果是,將輸入一個字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。得到的字符。 #include stdio#include .h void main ( ) void main ( ) char ch char ch; ; scanf
23、scanf(%c,& ch(%c,& ch);); ch ch= =(ch(ch=A& ch=A& ch=Z)?(ch+32):ch;=Z)?(ch+32):ch; printf printf(%cn,ch(%cn,ch);); 如果字符變量ch的值為大寫字母,則條件表達式的值為(),即相應(yīng)的小寫字母。如果ch的值不是大寫字母,則條件表達式的值為,即不進行轉(zhuǎn)換。 說明:(1).(1).條件運算符的執(zhí)行順序:先求解表達式,若為非(真)條件運算符的執(zhí)行順序:先求解表達式,若為非(真) 則求解表達式,此時表達式的值就作為整個條件表達式則求解表達式,此時表達式的值就作為整個條件表達式 的值。若表達式的
24、值為(假),則求解表達式,表達的值。若表達式的值為(假),則求解表達式,表達 式的值就是整個條件表達式的值。式的值就是整個條件表達式的值。 (2).(2).條件運算符優(yōu)先級高于賦值運算符條件運算符優(yōu)先級高于賦值運算符 ,低于關(guān)系運算符,低于關(guān)系運算符 和算術(shù)運算符。和算術(shù)運算符。 (3).(3).條件運算符的結(jié)合方向為條件運算符的結(jié)合方向為“自右至左自右至左”。 ( (4).“4).“表達式表達式2”2”和和“表達式表達式3”3”不僅可以是數(shù)值表達式,還可以不僅可以是數(shù)值表達式,還可以 是賦值表達式或函數(shù)表達式。是賦值表達式或函數(shù)表達式。(5).(5).條件表達式中,表達式的類型可以與表達式和
25、表達條件表達式中,表達式的類型可以與表達式和表達 式的類型不同。式的類型不同。 4.4 4.4 switchswitch語句以及語句以及switchswitch語句和語句和breakbreak語語 句構(gòu)成的選擇結(jié)構(gòu)句構(gòu)成的選擇結(jié)構(gòu)switch語句的格式:(表達式) 常量表達式:語句 常量表達式:語句 常量表達式:語句 :語句 例:要求按照考試成績的等級輸出百分制分?jǐn)?shù)段,用switch語句實現(xiàn):()(); (); (); (); (); 說明:(1)(1)后面括弧內(nèi)的后面括弧內(nèi)的“表達式表達式”, 標(biāo)準(zhǔn)允許標(biāo)準(zhǔn)允許 它為任何類型。它為任何類型。(2) (2) 當(dāng)表達式的值與某一個后面的常量表達式
26、的值相當(dāng)表達式的值與某一個后面的常量表達式的值相 等時,就執(zhí)行此后面的語句,若所有的等時,就執(zhí)行此后面的語句,若所有的 中的常量表達式的值都沒有與表達式的值匹配的,就執(zhí)行中的常量表達式的值都沒有與表達式的值匹配的,就執(zhí)行 后面的語句。后面的語句。(3) (3) 每一個的常量表達式的值必須互不相同,否則就每一個的常量表達式的值必須互不相同,否則就 會出現(xiàn)互相矛盾的現(xiàn)象(對表達式的同一個值,有兩種或會出現(xiàn)互相矛盾的現(xiàn)象(對表達式的同一個值,有兩種或 多種執(zhí)行方案)。多種執(zhí)行方案)。(4) (4) 各個和的出現(xiàn)次序不影響執(zhí)行結(jié)各個和的出現(xiàn)次序不影響執(zhí)行結(jié) 果。例如,可以先出現(xiàn)果。例如,可以先出現(xiàn)“:
27、”,再出現(xiàn),再出現(xiàn) “ “ :”,然后是,然后是“ :”。(5) (5) 執(zhí)行完一個后面的語句后,流程控制轉(zhuǎn)移到下一執(zhí)行完一個后面的語句后,流程控制轉(zhuǎn)移到下一 個繼續(xù)執(zhí)行。個繼續(xù)執(zhí)行?!俺A勘磉_式常量表達式”只是起語句只是起語句 標(biāo)號作用,并不是在該處進行條件判斷。在執(zhí)行標(biāo)號作用,并不是在該處進行條件判斷。在執(zhí)行 語句時,根據(jù)后面表達式的值語句時,根據(jù)后面表達式的值 找到匹配的入口標(biāo)號,就從此標(biāo)號開始執(zhí)行下去,不再進找到匹配的入口標(biāo)號,就從此標(biāo)號開始執(zhí)行下去,不再進 行判斷。行判斷。應(yīng)該在執(zhí)行一個分支后應(yīng)該在執(zhí)行一個分支后, ,可以用一個可以用一個 語句來終止語句來終止switchswitch
28、語句的執(zhí)行。語句的執(zhí)行。 (6) (6) 多個可以共用一組執(zhí)行語句。多個可以共用一組執(zhí)行語句。 【例】main() int a; printf(input integer number: ); scanf(%d,&a); switch (a) case 1:printf(Mondayn);case 2:printf(Tuesdayn);case 3:printf(Wednesdayn);case 4:printf(Thursdayn);case 5:printf(Fridayn);case 6:printf(Saturdayn);case 7:printf(Sundayn);default:p
29、rintf(errorn); 本程序是要求輸入一個數(shù)字,輸出一個英文單詞。但是當(dāng)輸入3之后,卻執(zhí)行了case3以及以后的所有語句,輸出了Wednesday 及以后的所有單詞。這當(dāng)然是不希望的。為什么會出現(xiàn)這種情況呢?這恰恰反應(yīng)了switch語句的一個特點。在switch語句中,“case 常量表達式”只相當(dāng)于一個語句標(biāo)號, 表達式的值和某標(biāo)號相等則轉(zhuǎn)向該標(biāo)號執(zhí)行,但不能在執(zhí)行完該標(biāo)號的語句后自動跳出整個switch 語句,所以出現(xiàn)了繼續(xù)執(zhí)行所有后面case語句的情況。 這是與前面介紹的if語句完全不同的,應(yīng)特別注意。為了避免上述情況,語言還提供了一種break語句,專用于跳出switch語句,
30、break 語句只有關(guān)鍵字break,沒有參數(shù)。在后面還將詳細介紹。修改例題的程序,在每一case語句之后增加break 語句, 使每一次執(zhí)行之后均可跳出switch語句,從而避免輸出不應(yīng)有的結(jié)果。【例】 main() int a; printf(input integer number: ); scanf(%d,&a); switch (a) case 1:printf(Mondayn);break; case 2:printf(Tuesdayn); break; case 3:printf(Wednesdayn);break; case 4:printf(Thursdayn);break;
31、 case 5:printf(Fridayn);break; case 6:printf(Saturdayn);break; case 7:printf(Sundayn);break; default:printf(errorn); 在使用switch語句時還應(yīng)注意以下幾點:1) 在case后的各常量表達式的值不能相同,否則會出現(xiàn)錯誤。2) 在case后,允許有多個語句,可以不用括起來。3) 各case和default子句的先后順序可以變動,而不會影響程序執(zhí)行結(jié)果。4) default子句可以省略不用。break語句語句 break語句通常用在循環(huán)語句和開關(guān)語句中。當(dāng)break用于開關(guān)語句sw
32、itch中時,可使程序跳出switch而執(zhí)行switch以后的語句;循環(huán)語句中如果沒有break語句,則將成為一個死循環(huán)而無法退出。break在switch 中的用法已在前面介紹開關(guān)語句時的例子中碰到,這里不再舉例。 break語句用于do-while、for、while循環(huán)語句中時,可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語句, 通常break語句總是與if語句聯(lián)在一起。即滿足條件時便跳出循環(huán)。下一章詳細介紹 【例】【例】 Main ( )Main ( ) int int i=0; i=0; char c; char c; while(1) / while(1) /* *設(shè)置循環(huán)設(shè)置循環(huán)* */ /
33、 c=0; / c=0; /* *變量賦初值變量賦初值* */ / while(c!=13&c!=27) / while(c!=13&c!=27) /* *鍵盤接收字符直到按回車或鍵盤接收字符直到按回車或EscEsc鍵鍵* */ / c=getch c=getch();(); printf printf(%cn, c);(%cn, c); if(c=27) if(c=27) break; / break; /* *判斷若按判斷若按EscEsc鍵則退出循環(huán)鍵則退出循環(huán)* */ / i+; i+; printf printf(The No. is %dn, i);(The No. is %dn,
34、i); printf printf(The end);(The end); 注意: 1) break語句對if-else的條件語句不起作用。 2) 在多層循環(huán)中, 一個break語句只向外跳一層。 4.5 4.5 語句標(biāo)號和語句標(biāo)號和gotogoto語句語句4.5.1 4.5.1 語句標(biāo)號語句標(biāo)號4.5.2 goto4.5.2 goto語句語句4.5.1 4.5.1 語句標(biāo)號語句標(biāo)號 在C語言中,語句標(biāo)號不必特意加以定義,標(biāo)號可以是任意合法的標(biāo)識符,當(dāng)標(biāo)識符后面加一個冒號,如:flag1 :、stop:,該標(biāo)識符就成了一個語句標(biāo)號。 注意:在C語言中,語句標(biāo)號必須是標(biāo)識符必須是標(biāo)識符,因此不能
35、簡單地使用10: 、15:等形式。標(biāo)號可以和變量同名。 通常,標(biāo)號用作goto 語句的轉(zhuǎn)向目標(biāo)。如: goto stop; 在C語言中,可以在任何語句前加上語句標(biāo)號。例如: stop: print(“ENDn”);4.5.2 goto4.5.2 goto語句語句 goto語句是一種無條件轉(zhuǎn)移語句, 與BASIC中的goto語句相似。goto 語句的使用格式為: goto 語句標(biāo)號; 其中標(biāo)號是一個有效的標(biāo)識符,這個標(biāo)識符加上一個“:”一起出現(xiàn)在函數(shù)內(nèi)某處, 執(zhí)行g(shù)oto語句后,程序?qū)⑻D(zhuǎn)到該標(biāo)號處并執(zhí)行其后的語句。另外標(biāo)號必須與goto語句同處于一個函數(shù)中,但可以不在一個循環(huán)層中。通常goto
36、語句與if條件語句連用, 當(dāng)滿足某一條件時, 程序跳到標(biāo)號處運行。 goto語句通常不用,主要因為它將使程序?qū)哟尾磺?且不易讀,但在多層嵌套退出時, 用goto語句則比較合理。4.5.2 goto4.5.2 goto語句語句( (續(xù)續(xù)) ) 【例】用【例】用gotogoto語句和語句和ifif語句構(gòu)成循環(huán)語句構(gòu)成循環(huán), , 。 main()main() int int i,sum=0; i,sum=0; i=1; i=1; loop: if(i=100) loop: if(i=100) sum=sum+i; sum=sum+i; i+; i+; goto goto loop; loop; printf printf(%dn,sum);(%dn,sum); 1001nn課后習(xí)題課后習(xí)題P46-49 P46-49 習(xí)題習(xí)題
- 溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024《增值稅法》全文學(xué)習(xí)解讀(規(guī)范增值稅的征收和繳納保護納稅人的合法權(quán)益)
- 2024《文物保護法》全文解讀學(xué)習(xí)(加強對文物的保護促進科學(xué)研究工作)
- 銷售技巧培訓(xùn)課件:接近客戶的套路總結(jié)
- 20種成交的銷售話術(shù)和技巧
- 銷售技巧:接近客戶的8種套路
- 銷售套路總結(jié)
- 房產(chǎn)銷售中的常見問題及解決方法
- 銷售技巧:值得默念的成交話術(shù)
- 銷售資料:讓人舒服的35種說話方式
- 汽車銷售績效管理規(guī)范
- 銷售技巧培訓(xùn)課件:絕對成交的銷售話術(shù)
- 頂尖銷售技巧總結(jié)
- 銷售技巧:電話營銷十大定律
- 銷售逼單最好的二十三種技巧
- 銷售最常遇到的10大麻煩