C語言第四章分支語句.ppt
例: 輸入三個實數,按從小到大的順序輸出。 main( ) {float a,b,c,t; scanf(“%f,%f,%f ”,&a,&b,&c); if (a>b) { t=a; a=b; b=t; } if (a>c) { t=a; a=c; c=t; } if (b>c) { t=b; b=c; c=t; } printf(“%5.2f,%5.2f,%5.2f ”,a,b,c); } 例:if (a>b) max=a; else max=b; ? max=(a>b) ? a : b; /*三目運算符*/ 例:if (a>b) printf(“%d”,a); else printf(“%d”,b); ? printf(“%d”,a>b ? a : b); ?優先級別: 算術>關系> 條件> 賦值 a>b?a:b+1; ? a>b?a:(b+1) ?結合方向: “自右至左” 如:a>b?a:c>d?c:d ? a>b?a:(c>d?c:d) ? x?‘a’:‘b’ 當x = 0時,條件表達式的值為‘b’ ?條件表達式中的操作對象類型可以不同,結果取較高類型。 如: x>y?1:1.5 當x > y時,值為 1.0。 例: 求兩個數的運算結果(和/差/積/商) 。 main( ) { float a ,b, w ; char operate; scanf(“%f%c%f”,&a,&operate,&b); switch (operate) { case ‘+’: w=a+b; break; case ‘-’: w=a-b; break; case ‘*’: w=a*b; break; case ‘/’: w=a/b; break; } printf(“= %f \n ”,w); } 程序運行結果: 輸入:2 輸出:fine----at hill wind----to outskirt other----at home 發現,如果輸入的天氣值為0,即天氣情況為下雨,則活動場所為所有地方,顯然這是與題意不相符合的,程序是錯誤的。 解決這個問題必須要用到分支語句:break。 §4.2.2 break語句在switch語句中的作用 如果是一個條件對應著一組獨立的操作,那么在switch語句的一般形式中,每一個完成后都要加上一條分支語句:break; switch條件分支互相獨立的形式: switch () { case : ; break; case : ; break; case :; break; …… case : ; break; default: ; } 先計算的值,再從上到下地判斷與哪一個的值相等,如果的值等于i的值,則執行i,執行完后,跳出switch結構,執行switch結構外的下一條語句. 功能: 【例4-7】將例4-6改寫成具有獨立分支的switch結構。 #include main( ) { int weather; scanf("%d",&weather); switch (weather) {case 0: printf ("rain----at palaestra\n"); break; case 1: printf ("snow----at playground\n"); break; case 2: printf ("fine----at hill\n"); break; case 3: printf ("wind----to outskirt\n"); break; default: printf ("other----at home\n"); }