![C語言程序設計:第4章 選擇結構程序設計 (2)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/c8855fd9-7440-4ad6-8d44-24db9dbcbe89/c8855fd9-7440-4ad6-8d44-24db9dbcbe891.gif)
![C語言程序設計:第4章 選擇結構程序設計 (2)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/c8855fd9-7440-4ad6-8d44-24db9dbcbe89/c8855fd9-7440-4ad6-8d44-24db9dbcbe892.gif)
![C語言程序設計:第4章 選擇結構程序設計 (2)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/c8855fd9-7440-4ad6-8d44-24db9dbcbe89/c8855fd9-7440-4ad6-8d44-24db9dbcbe893.gif)
![C語言程序設計:第4章 選擇結構程序設計 (2)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/c8855fd9-7440-4ad6-8d44-24db9dbcbe89/c8855fd9-7440-4ad6-8d44-24db9dbcbe894.gif)
![C語言程序設計:第4章 選擇結構程序設計 (2)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/c8855fd9-7440-4ad6-8d44-24db9dbcbe89/c8855fd9-7440-4ad6-8d44-24db9dbcbe895.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1第第 4 4章選擇結構程序設計章選擇結構程序設計 4.1 4.1 關系運算符與關系表達式關系運算符與關系表達式 4.2 4.2 邏輯運算符與邏輯表達式邏輯運算符與邏輯表達式 4.3 4.3 選擇結構控制語句選擇結構控制語句 4.4 4.4 條件運算符和條件表達表條件運算符和條件表達表 4.5 4.5 選擇結構程序綜合舉例選擇結構程序綜合舉例24.1 關系運算符與關系表達式關系運算也稱為比較運算,也就是對兩個運算數的大小關系關系運算也稱為比較運算,也就是對兩個運算數的大小關系進行比較,判定兩個數值之間的關系。關系運算的結果只有進行比較,判定兩個數值之間的關系。關系運算的結果只有真和假兩種,由于
2、真和假兩種,由于C C語言沒有設置邏輯類型數據,因此,關系語言沒有設置邏輯類型數據,因此,關系表達式的運算結果只能是表達式的運算結果只能是1 1或或0 0,整數,整數1 1表示真,表示真,0 0表示假。表示假。運算符運算符作用作用運算數運算數結合性結合性優(yōu)先級優(yōu)先級 小于小于雙目雙目左結合左結合1010= 大于大于雙目雙目左結合左結合1010=大于等于大于等于雙目雙目左結合左結合1010=等于等于雙目雙目左結合左結合9 9!=!=不等于不等于雙目雙目左結合左結合9 93例如:例如:(1) (1) 比較整型變量比較整型變量k k大于大于0 0,表達式為:,表達式為:k0k0(2) (2) 比較考
3、試成績比較考試成績scorescore大于等于大于等于6060,表達式為:,表達式為:score=60score=60(3) (3) 比較整型變量比較整型變量k k模模2 2等于等于0 0,即判斷,即判斷k k是否是偶數:是否是偶數:k%2=0k%2=0(4) (4) 比較字符變量比較字符變量chch的值等于的值等于AA,表達式為:,表達式為:ch!=Ach!=A由于關系運算符經常與算術運算符和賦值運算符等組成復雜的由于關系運算符經常與算術運算符和賦值運算符等組成復雜的表達式,因此進行運算時,需要考慮它們之間的優(yōu)先級關系,表達式,因此進行運算時,需要考慮它們之間的優(yōu)先級關系,關系運算符的優(yōu)先級
4、關系運算符的優(yōu)先級低于低于算術運算符,但是算術運算符,但是高于高于賦值運算符。賦值運算符。例如:例如:(1) (1) 表達式表達式k%2=0k%2=0等價于等價于(k%2)=0(k%2)=0,是判斷,是判斷k%2k%2的結果是否與的結果是否與0 0相等,這是一個關系表達式。相等,這是一個關系表達式。(2) (2) 表達式表達式a=53a=53等價于等價于a=(53)a=(53),是把,是把5353的結果的結果1 1賦值給賦值給a a,這,這是一個賦值表達式。是一個賦值表達式。例例4-14-1:閱讀程序:閱讀程序 #include #include int main() int main() i
5、nt k=3,score=75; int k=3,score=75; char ch = B; char ch = B; printf(k0 printf(k0的運算結果的運算結果: %dn,k0);: %dn,k0); printf(score=60 printf(score=60的運算結果的運算結果: %dn,score=60);: %dn,score=60); printf(k%2=0 printf(k%2=0的運算結果的運算結果: %dn,k%2=0);: %dn,k%2=0); printf(ch!=A printf(ch!=A的運算結果的運算結果: %dn,ch!=A);: %dn
6、,ch!=A); return 0; return 0; k0k0的運算結果的運算結果: 1: 1score=60score=60的運算結果的運算結果: 1: 1k%2=0k%2=0的運算結果的運算結果: 0: 0ch!=Ach!=A的運算結果的運算結果: 1: 154.2 邏輯運算符與邏輯表達式有時程序中需要判斷的條件比較復雜,是由多個簡單條件組有時程序中需要判斷的條件比較復雜,是由多個簡單條件組成的復合條件。成的復合條件。C C語言使用邏輯運算符和邏輯表達式解決復雜條件的表示。語言使用邏輯運算符和邏輯表達式解決復雜條件的表示。運算符運算符作用作用運算數運算數結合性結合性優(yōu)先級優(yōu)先級&
7、;邏輯與邏輯與雙目雙目左結合左結合5 5|邏輯或邏輯或雙目雙目左結合左結合4 4! !邏輯非邏輯非單目單目右結合右結合14146邏輯運算符連接運算數構成的式子稱為邏輯表達式。與關系運邏輯運算符連接運算數構成的式子稱為邏輯表達式。與關系運算相同,邏輯表達式的運算結果也只有真(算相同,邏輯表達式的運算結果也只有真(1 1)和假()和假(0 0)兩種,)兩種,但是邏輯表達式要求其但是邏輯表達式要求其運算數運算數也必須也必須是是表示真和假的表示真和假的邏輯值邏輯值。C C語言中,判斷運算數的真假時,任何非語言中,判斷運算數的真假時,任何非0 0數值被判定為真,只有數值被判定為真,只有0 0才被判定為假
8、。才被判定為假。a ab b!a!aa&ba&ba|ba|b真真( (非非0)0)真真( (非非0)0)假假(0)(0)真真(1)(1)真真(1)(1)真真( (非非0)0)假假(0)(0)假假(0)(0)假假(0)(0)真真(1)(1)假假(0)(0)真真( (非非0)0)真真(1)(1)假假(0)(0)真真(1)(1)假假(0)(0)假假(0)(0)真真(1)(1)假假(0)(0)假假(0)(0)7例如:例如:(1) (1) 判斷整型變量判斷整型變量k k的值是否在的值是否在0,1000,100之間,表達式為:之間,表達式為:k=0&k=0&k=A&
9、c=A&c0&k%2=1k0&k%2=1(4) (4) 判斷年份判斷年份y y是否為閏年,表達式為:是否為閏年,表達式為:y%4=0&y%100!=0|y%400=0y%4=0&y%100!=0|y%400=0邏輯表達式計算過程中,為了提高程序運行效率,邏輯表達式計算過程中,為了提高程序運行效率,C C語言在邏輯運算語言在邏輯運算中使用了中使用了“短路運算短路運算”規(guī)則規(guī)則。即除了要考慮表達式中各個運算符的運。即除了要考慮表達式中各個運算符的運算規(guī)則、優(yōu)先級和結合性外,還需要遵循以下兩條規(guī)則:算規(guī)則、優(yōu)先級和結合性外,還需要遵循以下兩條規(guī)則:(1) (1
10、) 邏輯表達式從左向右依次計算各個運算數的值。邏輯表達式從左向右依次計算各個運算數的值。(2) (2) 在上述從左向右計算過程中,任何時候只要能夠確定最終邏輯表在上述從左向右計算過程中,任何時候只要能夠確定最終邏輯表達式的值,則計算過程結束。達式的值,則計算過程結束。84.3 選擇結構控制語句程序設計中選擇結構程序對應的常見問題分為三種情況:程序設計中選擇結構程序對應的常見問題分為三種情況:(1) (1) 決定某個操作做還是不做,稱為決定某個操作做還是不做,稱為單分支選擇結構單分支選擇結構,對某,對某個問題的處理經常是根據某個條件進行判斷,如果條件成立,個問題的處理經常是根據某個條件進行判斷,
11、如果條件成立,則執(zhí)行特定的語句來處理問題,否則什么都不做。則執(zhí)行特定的語句來處理問題,否則什么都不做。(2) (2) 決定在兩個相關的操作中選擇哪一個來做,稱為決定在兩個相關的操作中選擇哪一個來做,稱為雙分支雙分支選擇結構選擇結構,需要處理的兩個操作往往和同一個條件相關,當,需要處理的兩個操作往往和同一個條件相關,當條件成立時做一個操作,當條件不成立時做另外一個操作。條件成立時做一個操作,當條件不成立時做另外一個操作。(3) (3) 確定在多個相關的操作中選擇哪一個來做,稱為確定在多個相關的操作中選擇哪一個來做,稱為多分支多分支選擇結構選擇結構,該類問題相比前兩種問題要復雜的多,它通常涉,該類
12、問題相比前兩種問題要復雜的多,它通常涉及多個條件的組合運用,通常的做法是將多個條件合理安排,及多個條件的組合運用,通常的做法是將多個條件合理安排,把多分支結構處理成多個雙分支的結構處理把多分支結構處理成多個雙分支的結構處理。C C語言提供語言提供ifif和和switchswitch兩種選擇結構控制語句,通過使用這兩種選擇結構控制語句,通過使用這兩種語句或語句組合解決上述三種情況的選擇結構程序設計。兩種語句或語句組合解決上述三種情況的選擇結構程序設計。語句語句真真假假表達式表達式1. if1. if語句的最簡單形式語句的最簡單形式單分支單分支ifif語句:語句:說明:說明:1. 1. 條件表達式
13、的值為條件表達式的值為1 1或或0 0,必須用,必須用( )( )括住括住 2. 2. 若有多條語句(復合語句)時,用若有多條語句(復合語句)時,用 括住。括住。 3. (3. (條件表達式條件表達式) )后不要加;后不要加;if (if (條件表達式條件表達式) ) 語句;語句;if (if (條件表達式條件表達式) ) 語句;語句; 語句;語句; 例例4-24-2:從鍵盤輸入一個整數,計算并輸出其絕對值。:從鍵盤輸入一個整數,計算并輸出其絕對值。 #include #include int main() int main() int x; int x; printf(Input an in
14、teger: ); printf(Input an integer: ); scanf(%d, &x); scanf(%d, &x); if(x0) if(x0) x=-x; / x=-x; /只有本句是只有本句是ifif結構的語句結構的語句 printf(|x|=%dn,x);printf(|x|=%dn,x); return 0; return 0; Input an integer: -10Input an integer: -10 |x|=10|x|=10Input an integer: 100Input an integer: 100 |x|=100|x|=100例
15、例4-34-3:從鍵盤輸入兩個整數:從鍵盤輸入兩個整數a a和和b b,要求程序按數值從大到小的,要求程序按數值從大到小的順序輸出這個整數。順序輸出這個整數。思路分析:求解本題有多種方法,這里使用交換變量值的思路,思路分析:求解本題有多種方法,這里使用交換變量值的思路,(1) (1) 輸入整數輸入整數a a和和b b的值。的值。(2) (2) 判斷條件判斷條件abab是否成立,如果成立,則交換變量是否成立,如果成立,則交換變量a a和和b b的值,的值,否則直接執(zhí)行下一步。否則直接執(zhí)行下一步。(3) (3) 按照先按照先a a后后b b的順序輸出兩個變量的值。的順序輸出兩個變量的值。 #inc
16、lude #include int main() int main() int a,b,c; int a,b,c; printf(Input 2 integers(a b):); printf(Input 2 integers(a b):); scanf(%d%d,&a,&b); scanf(%d%d,&a,&b); if(ab) if(ab) / /由于交換操作需要三條語句完成,所以使用復合語句由于交換操作需要三條語句完成,所以使用復合語句 c=a; a=b; b=c; c=a; a=b; b=c; printf(%d,%dn,a,b); printf(%d,
17、%dn,a,b); return 0; return 0; Input 2 integers(a b):100 10Input 2 integers(a b):100 10 100,10100,10Input 2 integers(a b):10 100Input 2 integers(a b):10 100 100,10100,102.2.雙分支雙分支ifif語句語句if (if (表達式表達式) ) 語句語句1 1else else 語句語句2 2首先先判斷表達式的值首先先判斷表達式的值若為非若為非0 0則執(zhí)行語句則執(zhí)行語句1 1若為若為0 0則執(zhí)行語句則執(zhí)行語句2 2語句語句1 1真真假
18、假語句語句2 2表達式表達式執(zhí)行過程:執(zhí)行過程:ifif語句的雙分支形式,語句的雙分支形式,在語法上在語法上視為一條語句。視為一條語句。例例4-44-4:判斷整數的奇偶性。從鍵盤輸入一個整數:判斷整數的奇偶性。從鍵盤輸入一個整數x x,根據其奇,根據其奇偶性輸出偶性輸出x x是奇數或是奇數或x x是偶數。是偶數。 #include #include int main() int main() int x; int x; printf(Input an integer: ); printf(Input an integer: ); scanf(%d,&x); scanf(%d,&
19、x); if(x%2=0) if(x%2=0) printf(%d is printf(%d is eveneven number.n,x); / number.n,x); /真真 分支分支 elseelse printf(%d is printf(%d is oddodd number.n,x); / number.n,x); /假假 分支分支 return 0;return 0; Input an integer: 12Input an integer: 12 12 is even number.12 is even number.Input an integer: 5Input an i
20、nteger: 5 5 is odd number.5 is odd number.例例4-54-5:修改例:修改例3-63-6使用海倫公式計算三角形面積程序的要求,當輸入使用海倫公式計算三角形面積程序的要求,當輸入的三個邊長能夠構成三角形時,計算面積;否則,輸出不能構成三角的三個邊長能夠構成三角形時,計算面積;否則,輸出不能構成三角形。形。思路分析:三角形面積的計算過程與原例題相同,新要求是在思路分析:三角形面積的計算過程與原例題相同,新要求是在“三個三個邊長能構成三角形邊長能構成三角形”這一條件成立時才進行計算面積,否則直接輸出這一條件成立時才進行計算面積,否則直接輸出提示信息。根據數學知
21、識,這一條件可以描述為提示信息。根據數學知識,這一條件可以描述為“任意兩個邊長之和任意兩個邊長之和大于第三個邊長大于第三個邊長”,輸入三個邊長,輸入三個邊長a a、b b、c c后,條件可以使用如下的后,條件可以使用如下的邏輯表達式描述:邏輯表達式描述:a+ba+bc & c & a+ca+cb & b & b+cb+caa #include #include #include #include int main() int main() double a,b,c,s,area; double a,b,c,s,area; printf(Input a b c:
22、); printf(Input a b c: ); scanf(%lf%lf%lf,&a,&b,&c); scanf(%lf%lf%lf,&a,&b,&c); if(a+bc & a+cb & b+ca) if(a+bc & a+cb & b+ca) / /真真 分支使用復合語句分支使用復合語句 s=(a+b+c)/2;s=(a+b+c)/2; area=sqrt(s area=sqrt(s* *(s-a)(s-a)* *(s-b)(s-b)* *(s-c);(s-c); printf(area=%.2fn,are
23、a); printf(area=%.2fn,area); else else printf(Not a triangle.n); / printf(Not a triangle.n); /假假 分支只有一條語句分支只有一條語句 return 0;return 0; Input a b c: 3.5 4.5 5.5Input a b c: 3.5 4.5 5.5 area=7.85area=7.85Input a b c: 3.0 4.0 10.0Input a b c: 3.0 4.0 10.0 Not a triangle.Not a triangle.3.3.使用嵌套使用嵌套ifif語句實
24、現多分支結構語句實現多分支結構 ifif語句語句的語句的語句1 1和語句和語句2 2又稱為又稱為ifif的執(zhí)行語句。的執(zhí)行語句。ifif的的執(zhí)行語句在語法上是一條語句,可以是任何類型的語句,執(zhí)行語句在語法上是一條語句,可以是任何類型的語句,簡單語句、復合語句、空語句、流程控制語句都可以作簡單語句、復合語句、空語句、流程控制語句都可以作為為ifif的執(zhí)行語句。的執(zhí)行語句。 下面我們通過一個例子分別介紹用不同的語句下面我們通過一個例子分別介紹用不同的語句作為作為ifif的執(zhí)行語句的情形:的執(zhí)行語句的情形:例:計算分段函數:例:計算分段函數:y=2*xx= -102+x-10 x=0 x-20 x1
25、0方法一:用簡單語句方法一:用簡單語句#includemain( ) float x,y; scanf(“%f”,&x); if(x=-10) y=2*x; if(-10 x&x=0) y=2+x; if(0 x&x10) y=x/10; printf(“y=%fn”,y); 方法二:用方法二:用ifif語句做語句語句做語句2 2#includemain( ) float x,y; scanf(“%f”,&x); if(x=-10) y=2*x; else if(x=0) y=2+x; else if(x=10) y=x-2; else y=x/10; prin
26、tf(“y=%fn”,y); 這種用這種用ifif語句作為上一層語句作為上一層ifif語句的語句語句的語句2 2的結構,的結構,稱為稱為ifif語句的多分支選擇結構語句的多分支選擇結構。if (if (表達式表達式) ) 語句語句1 1 else if ( else if (表達式表達式) )語句語句2 2 else else 先判斷表達式先判斷表達式1 1的值的值非非0 0就執(zhí)行下面的語句就執(zhí)行下面的語句為為0 0就執(zhí)行下一個判斷就執(zhí)行下一個判斷一直這樣做下去一直這樣做下去表達式表達式1 1真真語句語句1 1假假表達式表達式2 2表達式表達式3 3語句語句4 4語句語句3 3語句語句2 2真
27、真真真假假假假直到得出最后結果直到得出最后結果流程圖如左:流程圖如左:方法三:語句方法三:語句1 1與語句與語句2 2都為都為ifif語句語句#includemain( ) float x,y; scanf(“%f”,&x); if(x= -10) y=2+x; else y=2*x; else if(x=10) y=x-2; else y=x/10; printf(“ny=%f”,y); 這種用這種用ifif語句作為上一層語句作為上一層ifif語句的語句語句的語句1 1和語句和語句2 2的結構,稱為的結構,稱為ifif語句的嵌套語句的嵌套。if if 語句的二層嵌套結構如下:語句的二
28、層嵌套結構如下:if ( 表達式表達式1) if ( 表達式表達式1_2) 語句語句1_1 else 語句語句1_2else if ( 表達式表達式2_1) 語句語句2_1 else 語句語句2_2表達式表達式1_21_2表達式表達式1 1表達式表達式1_21_2語句語句1_11_1語句語句1_21_2語句語句2_12_1語句語句2_22_2非非0 00 00 0非非0 00 0非非0 0if (expr1) if (expr2) statement1 else statement2else if(expr3) statement3 else statement4內嵌內嵌if內嵌內嵌ifif
29、(expr1) if (expr2) statement1 else statement2內嵌內嵌ifif (expr1) if (expr2) statement1else statement3 內嵌內嵌ifif (expr1) statement1else if(expr3) statement3 else statement4內嵌內嵌ififif語句嵌套語句嵌套if else if else 配對原則配對原則:C C語言規(guī)定,語言規(guī)定,elseelse總是與前面總是與前面離它最近離它最近的同一語句塊(復合語句)中的尚的同一語句塊(復合語句)中的尚未匹配過的未匹配過的ifif進行匹配。進行
30、匹配。if()if()if()if()if()if()elseelseelseelseelseelse實實現現if else 正正確確配配對對方方法法例:例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);修改:修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);實現實現if else if else 正確配對方法:加正確配對方法:加 3. switch3. switch語句語句使用使用ifif語句嵌套解決實際問題中的多分支選擇時,如果分支數目語句嵌套解決實際問題中的多
31、分支選擇時,如果分支數目非常多,那么非常多,那么ifif語句的嵌套層數也會很多,使得程序代碼變得冗語句的嵌套層數也會很多,使得程序代碼變得冗長而且可讀性會下降。長而且可讀性會下降。C C語言提供了語言提供了switchswitch語句來處理多分支選語句來處理多分支選擇。擇。switchswitch語句的語法形式如下:語句的語法形式如下:switch(switch(表達式表達式) case case 常量常量1: 1: 語句或語句組語句或語句組1; 1; case case 常量常量2: 2: 語句或語句組語句或語句組2; 2; case case 常量常量n: n: 語句或語句組語句或語句組n
32、; n; default: default: 語句或語句組語句或語句組n+1;n+1; switch語句語句#include #include int main() int main() char ch; char ch; printf(Input a character: ); printf(Input a character: ); ch=getchar(); ch=getchar(); switch(ch) switch(ch) caseA: putchar(ch); caseA: putchar(ch); caseB: putchar(ch); caseB: putchar(ch);
33、caseC: putchar(ch); caseC: putchar(ch); return 0; return 0; Input a character: Input a character: ch的值為的值為A時,輸出為:時,輸出為:AAAch的值為的值為B時,輸出為:時,輸出為:BBch的值為的值為C時,輸出為:時,輸出為:C#include #include intint main() main() char char chch; ; printf(Inputprintf(Input a character: ); a character: ); chch= =getchargetch
34、ar();(); switch(chswitch(ch) ) caseAcaseA: : putchar(chputchar(ch););break;break; caseBcaseB: : putchar(chputchar(ch););break;break; caseCcaseC: : putchar(chputchar(ch););break;break; default: printf( default: printf(不是不是ABCABC字符字符); return 0; return 0; Input a character: Input a character: ch的值為的值為
35、A時,輸出為:時,輸出為:Ach的值為的值為B時,輸出為:時,輸出為:Bch的值為的值為C時,輸出為:時,輸出為:Cch的值為其它時,輸出為:不是的值為其它時,輸出為:不是ABC字符字符例例4-74-7:從鍵盤上輸入一個字符,判斷并輸出它是數字、空格還是其他字符,:從鍵盤上輸入一個字符,判斷并輸出它是數字、空格還是其他字符,如果是空格,則輸出空格提示如果是空格,則輸出空格提示; ;如果是數字,則輸出是哪一個數字;如果是如果是數字,則輸出是哪一個數字;如果是其它字符,則輸出其它提示。其它字符,則輸出其它提示。思路分析:從題目可知,需要判斷分支比較多,包括思路分析:從題目可知,需要判斷分支比較多,
36、包括1010個數字字符、個數字字符、1 1個空個空格字符和其他字符共格字符和其他字符共1212個分支,使用個分支,使用switchswitch語句解決該問題比較方便,同時語句解決該問題比較方便,同時仔細分析可以發(fā)現仔細分析可以發(fā)現1010個數字字符的處理方式是相同的,因此這個數字字符的處理方式是相同的,因此這1010個分支可以個分支可以共用同一組語句,程序流程如圖共用同一組語句,程序流程如圖4-104-10所示。所示。 #include #include int main() int main() char ch; char ch; printf(Input a character: ); p
37、rintf(Input a character: ); ch=getchar(); ch=getchar(); switch(ch) switch(ch) case 0: case 0: case 1: case 1: case 2: case 2: case 3: case 3: case 4: case 4: case 5: case 5: case 6: case 6: case 7: case 7: case 8: case 8: case 9: case 9: printf(digit:%cn,ch); printf(digit:%cn,ch); break; break; case
38、 : case : printf(spacen); printf(spacen); break; break; default: default: printf(othern); printf(othern); return 0; return 0; Input a character: 5Input a character: 5 digit:5digit:5Input a character: Input a character: spacespaceInput a character: AInput a character: A otherother使用使用switchswitch語句的注
39、意事項語句的注意事項P61-62P61-62(1) switch(1) switch后面表達式的值的類型必須是整型、字符型或枚舉類后面表達式的值的類型必須是整型、字符型或枚舉類型。每一個型。每一個casecase常量的類型必須與表達式值的類型相同,而且每常量的類型必須與表達式值的類型相同,而且每個個casecase常量的值必須是互不相同的。常量的值必須是互不相同的。(2) default(2) default分支是分支是可選可選的,當一個的,當一個switchswitch語句中沒有語句中沒有defaultdefault分分支時,如果沒有與支時,如果沒有與switchswitch表達式的值相同的
40、表達式的值相同的casecase常量,則不執(zhí)行常量,則不執(zhí)行任何語句,程序轉移到任何語句,程序轉移到switchswitch語句的下一條語句執(zhí)行。語句的下一條語句執(zhí)行。(3) (3) 各個各個casecase分支及分支及defaultdefault分支的分支的出現次序出現次序可以交換,無論如可以交換,無論如果排列各個分支的次序,總是按照果排列各個分支的次序,總是按照switchswitch表達式的值來選擇某個表達式的值來選擇某個分支執(zhí)行。分支執(zhí)行。(4)(4)一個一個casecase塊內的代碼執(zhí)行完畢,如果塊內的代碼執(zhí)行完畢,如果沒有遇到沒有遇到breakbreak,后面還,后面還有有case
41、case塊,則繼續(xù)執(zhí)行該塊,則繼續(xù)執(zhí)行該casecase塊內的代碼。塊內的代碼。4.4.條件運算符和條件表達式條件運算符和條件表達式條件運算符是條件運算符是C C語言中唯一的一個三元運算符,使用條件運算符語言中唯一的一個三元運算符,使用條件運算符構成的表達式稱為條件表達式,其一般形式如下:構成的表達式稱為條件表達式,其一般形式如下:表達式表達式1 ? 1 ? 表達式表達式2 2 : : 表達式表達式3 3條件表達式的計算過程是:首先計算表達式條件表達式的計算過程是:首先計算表達式1 1的值;如果值為真的值;如果值為真(非(非0 0),則計算表達式),則計算表達式2 2的值作為條件表達式的值;否
42、則,計算的值作為條件表達式的值;否則,計算計算表達式計算表達式3 3的值作為條件表達式的值。的值作為條件表達式的值。例例4-84-8:使用條件運算實現從鍵盤輸入兩個整數,輸出其較大的:使用條件運算實現從鍵盤輸入兩個整數,輸出其較大的值。值。 #include #include int main() int main() int max, a, b; int max, a, b; printf(Input two integers: ); printf(Input two integers: ); scanf(%d%d, &a,&b); scanf(%d%d, &a,&a
43、mp;b); max = ab ? a : b; max = ab ? a : b; printf(max=%dn,max); printf(max=%dn,max); return 0; return 0; Input two integers: 5 10Input two integers: 5 10 max=10max=10Input two integers: 15 10Input two integers: 15 10 max=15max=15條件運算符和條件表達式條件運算符和條件表達式(1 1)條件運算符的優(yōu)先級高于賦值運算符,而低于其他所)條件運算符的優(yōu)先級高于賦值運算符,而低于
44、其他所有的運算符;有的運算符; 如:如:min=ab?bmin=ab?b* *b:ab:a* *a;a;(2 2)條件運算符是左結合的;)條件運算符是左結合的; 如:如:flag=a0?1:a=0?0:1;flag=a0?1:a=0?0:1;(3 3)條件表達式中)條件表達式中3 3個表達式的類型可以不同,其中表達式個表達式的類型可以不同,其中表達式2 2和表達式和表達式3 3中類型較高的一個決定條件表達式的類型;中類型較高的一個決定條件表達式的類型; 如:如:max=ab?3.14:100;max=ab?3.14:100;例例4-9求一元二次方程求一元二次方程ax2+bx+c=0的所有根。的
45、所有根。#include#includeintmain()doublea,b,c,d,p,q;printf(Inputabc:);scanf(%lf%lf%lf,&a,&b,&c);if(fabs(a)1e-6)printf(Error:acannotbe0!n);elsed=b*b-4*a*c;p=-b/(2*a);if(fabs(d)0)q=sqrt(d)/(2*a);printf(Tworealroots:%.4f,%.4fn,p+q,p-q);elseq=sqrt(-d)/(2*a);printf(Twocomplexroots:%.4f+%.4fi,%.4f-
46、%.4fin,p,q,p,q);return0;Input a b c:0 1 2 Input a b c:0 1 2 Error: a can not be 0!Error: a can not be 0!Input a b c:Input a b c:2.2.0 0 4.04.0 2.02.0 Two same roots:-1.0000Two same roots:-1.0000Input a b c:1.0 2.0 -3.0 Input a b c:1.0 2.0 -3.0 Two real roots:1.0000 -3.0000Two real roots:1.0000 -3.0000Input a b c:1.0 2.0 4.0 Input a b c:1.0 2.0 4.0 Two comples roots:Two comples roots:1.0000 +1.7321i1.0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學生交流會策劃方案(8篇)
- 2025年材料用過濾袋合同采購流程
- 2025年醫(yī)用耗材集中采購協(xié)議
- 2025年文物遺址保護服務項目規(guī)劃申請報告
- 2025年舞蹈學校教職員工勞動合同
- 2025年貴金屬靶材項目申請報告模板
- 2025年企業(yè)互助共享協(xié)議
- 2025年單位二手商業(yè)房產出售合同范本
- 2025年公司員工競業(yè)限制協(xié)議范例
- 2025年組合開關項目提案報告
- GB/T 24630.2-2024產品幾何技術規(guī)范(GPS)平面度第2部分:規(guī)范操作集
- 鐵路運輸經濟法規(guī)教學大綱
- 二年級上冊100以內進位加法豎式計算題100道及答案
- 井控培訓考試題及答案
- 幼兒園 中班心理健康《我會傾訴》
- 貴州省遵義市數學小升初試卷及解答參考(2024-2025學年)
- 【課件】2024-2025學年高一上學期英語開學第一課課件
- 專題04 地質地貌-備戰(zhàn)2025年高考地理真題題源解密(新高考用)(解析版)
- 市政道路改造工程施工組織設計
- 2024-2029年擴展塢行業(yè)市場現狀供需分析及市場深度研究發(fā)展前景及規(guī)劃投資研究報告
- SH/T 3003-2024 石油化工合理利用能源設計導則(正式版)
評論
0/150
提交評論