switch 語句實現多分支結構


一般格式:switch(表達式【 只能是整型表達式,C語言默認字符為整數,不能用浮點型和字符串型】){
                       case 常量表達式1【 不包含變量和函數調用的任何表達式,表達式值必須為整數或者字符】:語句序列1【后帶有break時會從此處跳出switch循環,否則將會依次執行到語句結束】
                        case 常量表達式2 :語句序列2
                            ……
                        case 常量表達式n :語句序列n
                        default:語句序列n+1【 表達式值若與case后任意一常量表達式值不等,則執行此語句,所以本語句可存在可不存在 】}
eg:
#include<stdio.h>                                   
int main(){                                                      
    double s1,s2,s;                       
    char $;                                                            
    scanf("%lf%c%lf",&s1,&$,&s2);                            
    switch($){                                                        
        case '+':printf("%.2f\n",s1+s2);breakcase '-':printf("%.2f\n",s1-s2);breakcase '*':printf("%.2f\n",s1*s2);break// 輸出6.00
        case '/':printf("%.2f\n",s1/s2);break//  0.67
        default:printf("運算符錯誤\n");break;}// 運算符錯誤
    return 0;
}
break使得實現了真正意義上的多分支,執行時op依次與case后的常量表達式比較,相等時開始執行本行,之后依次執行, 直到遇見break跳出switch循環】
在switch中不使用break
eg://輸入一個正整數n(n<100000),請輸出n的位數,並逆序輸出n的每一位數字
#include<stdio.h>
#include<math.h>
int main(){
    int n,len;
    scanf("%d",&n);
    len=(int)log10(n)+1;//計算n的位數
    printf("%d\n",len);
    switch(len){
        case 5:printf("%d",n%10); n=n/10;
        case 4:printf("%d",n%10); n=n/10;
        case 3:printf("%d",n%10); n=n/10;
        case 2:printf("%d",n%10); n=n/10;
        case 1:printf("%d",n%10);
    }
    return 0;
}
/*在switch的某些語句段中使用break
計算某年某月的天數*/
#include<stdio.h>
int main(){
    int y,m,d;
    scanf("%d%d",&y,&m);
    switch(m){
        case 4:
        case 6:
        case 9:
        case 11:d=30;break;
        case 2:{
            if(y%4==0&&y%100!=0||y%400==0)
            d=29;
            else d=28;
            break;
        }
        default:d=31;break;
    }
    printf("%d",d);
}
四則運算中講究除數不能為0,所以fabs(y)>le-10(大於1*10(-10))
continue是中斷循環的本次執行,立即開始執行下一次循環;而break是立即結束所在循環。
continue是指跳回for循環的開始,執行調整語 句並判斷循環條件(即“直接進行下一次循環”),而break是指直接跳出循環
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM