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是指直接跳出循环
 
 

猜你喜欢

转载自www.cnblogs.com/BJYXZHAN/p/12295024.html
今日推荐