【正文】
。 } case 可共用一組執(zhí)行語(yǔ)句.例: switch (i) { case 1: case 2: case 3: 語(yǔ)句 1 ; break 。 case 4: case 5: 語(yǔ)句 2 ; break 。 default: 語(yǔ)句 3 ; } 34 34 main ( ) /*輸入年份和月份,打印該年、該月有幾天 */ { int year, month, day。 printf(please input the year number and month number :)。 scanf ( ”%d %d ,amp。year, amp。month ) 。 switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day=31。 break 。 case 4: case 6: case 9: case 11: day=30。 break 。 case 2: if(year % 4==0 amp。amp。 year% 100!=0 || year% 400==0) day=29。 else day=28。 break 。 default : day=1。 } if (day= = 1) printf(Invalid month input !\n)。 else printf(”%d.%d has %d days \n,year,month,day)。 } 167。 switch 語(yǔ)句 [例 58] 輸入年份和月份,打印該年、該月有幾天。 35 35 [例 59] 解一元二次方程 a x2+ b x + c = 0 , a 、 b 、 c 由鍵盤輸入 。 分析:對(duì)系數(shù) a 、 b 、 c 考慮以下情形 1) 若 a = 0 : ① b 0 , 則 x=c/b ; ② b = 0 , 則 :① c = 0 , 則 x 無(wú)定根; ② c 0, 則 x 無(wú)解。 2) 若 a 0 : ① b24ac 0 , 有兩個(gè)不等的實(shí)根; ② b24ac= 0 , 有兩個(gè)相等的實(shí)根; ③ b24ac 0 , 有兩個(gè)共軛復(fù)根。 167。 程序舉例 36 36 [例 59] 解一元二次方程 a x2+ b x + c = 0 ,a 、 b 、 c 由鍵盤輸入 。 include include main( ) { float a,b,c,delt, x1,x2。 double t。 printf( please input a,b,c:)。 scanf ( %f %f %f , amp。a,amp。b,amp。c ) 。 if (a==) if ( b ! = 0 . 0 ) printf(the root is :%f\n,c/b)。 else if (c==) printf(x is inexactive\n )。 else printf(no root!\n)。 else /* a0 */ { delt = b*b 4*a*c 。 if ( delt = ) 167。 程序舉例 if ( delt ) { t = sqrt( delt ) 。 x1 = * ( b + t ) / a 。 x2 = * ( b t ) / a 。 printf(There are two different roots:%f and%f\n,x1 , x2 ) 。 } else /* delt==0*/ printf(There are two equal roots:%f\n,*b/a)。 else /* delt0 */ { t = sqrt( delt ) 。 x1=*b/a。 / *實(shí)部 * / x2=fabs(*t/a)。 /*虛部的絕對(duì)值 * / printf(There are two virtual roots:)。 printf(%f+i%f\t\t%fi%f\n,x1,x2,x1,x2 )。 } } /*end of a0 */ } /*end of main */ 37 37 運(yùn)行結(jié)果如下: RUN ? please input a,b,c : 1 2 ?? There are two virtual roots: + i i RUN ? please input a,b,c : 2 5 ?? There are two different roots : and RUN ? please input a,b,c : 0 0 ?? No root! 167。 程序舉例 38 38 [例 510] 鍵盤輸入一百分制成績(jī) , 要求輸出成績(jī)等級(jí) ‘ A?、 ?B?、 ?C?。 90分以上為 ‘ A?,60~89為 ‘ B?, 60分以下為 ‘ C?。 include “” main() { int score,n。 printf(“\n請(qǐng)輸入一學(xué)生成績(jī): ” )。 scanf(“%d”,amp。score)。 n=score/10。 switch(n) { case 10: case 9: printf(“A”)。break。 case 8: case 7: case 6: printf(“B”)。break。 default: printf(“C”)。 } printf(“\n”)。 } 167。 程序舉例 程序運(yùn)行情況如下: 請(qǐng)輸入一學(xué)生成績(jī): 75 ? B 39 39 小 結(jié) ? 關(guān)系運(yùn)算符和關(guān)系表達(dá)式; ? 邏輯運(yùn)算符和邏輯表達(dá)式 。 ? if 語(yǔ)句; ? switch 語(yǔ)句。 ? 重點(diǎn):掌握選擇結(jié)構(gòu)及其程序設(shè)計(jì)。 40 40 作 業(yè) ? 書面作業(yè) – P104 、 、 (畫流程圖和 NS圖 ) ? 上機(jī)作業(yè) – 實(shí)驗(yàn)四 ? 課外上機(jī)作業(yè) – 本章的所有例題 +課后實(shí)驗(yàn)部分