精华内容
下载资源
问答
  • C语言switch case语句详解

    千次阅读 多人点赞 2020-02-22 10:36:58
    当分支比较少时候我们使用if else语句解决,当分支比较多时候,我们要使用switch case语句解决,针对分支复杂性选择合适程序解决。 当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对...

    当分支比较少的时候我们使用if else语句解决,当分支比较多的时候,我们要使用switch case语句解决,针对分支的复杂性选择合适的程序解决。

    当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况。例如,输入一个整数,输出该整数对应的星期几的英文表示:

    #include <stdio.h>
    int main(){
        int a;
        printf("Input integer number:");
        scanf("%d",&a);
        if(a==1){
            printf("Monday\n");
        }else if(a==2){
            printf("Tuesday\n");
        }else if(a==3){
            printf("Wednesday\n");
        }else if(a==4){
            printf("Thursday\n");
        }else if(a==5){
            printf("Friday\n");
        }else if(a==6){
            printf("Saturday\n");
        }else if(a==7){
            printf("Sunday\n");
        }else{
            printf("error\n");
        }
        return 0;
    }
    

    运行结果:

    Input integer number:3↙
    Wednesday
    

    对于上述情况,在实际开发中一般使用 switch 语句代替,请看下面的代码:

    #include <stdio.h>
    int main(){
        int a;
        printf("Input integer number:");
        scanf("%d",&a);
        switch(a){
            case 1: printf("Monday\n"); break;
            case 2: printf("Tuesday\n"); break;
            case 3: printf("Wednesday\n"); break;
            case 4: printf("Thursday\n"); break;
            case 5: printf("Friday\n"); break;
            case 6: printf("Saturday\n"); break;
            case 7: printf("Sunday\n"); break;
            default:printf("error\n"); break;
        }
        return 0;
    }
    

    运行结果:

    Input integer number:4↙
    Thursday
    

    switch 是另外一种选择结构的语句,用来代替简单的、拥有多个分枝的 if else 语句,基本格式如下:

    switch(表达式){
        case 整型数值1: 语句 1;
        case 整型数值2: 语句 2;
        ......
        case 整型数值n: 语句 n;
        default: 语句 n+1;
    }
    

    执行过程:
    1 . 首先计算“表达式”的值,假设为 m。

    2 . 从第一个 case 开始,比较“整型数值1”和 m,如果它们相等,就执行冒号后面的所有语句,也就是从“语句1”一直执行到“语句n+1”,而不管后面的 case 是否匹配成功。

    3 . 如果“整型数值1”和 m 不相等,就跳过冒号后面的“语句1”,继续比较第二个 case、第三个 case……一旦发现和某个整型数值相等了,就会执行后面所有的语句。假设 m 和“整型数值5”相等,那么就会从“语句5”一直执行到“语句n+1”。

    4 . 如果直到最后一个“整型数值n”都没有找到相等的值,那么就执行 default 后的“语句 n+1”。

    注意,当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句。例如:

    #include <stdio.h>
    int main(){
        int a;
        printf("Input integer number:");
        scanf("%d",&a);
        switch(a){
            case 1: printf("Monday\n");
            case 2: printf("Tuesday\n");
            case 3: printf("Wednesday\n");
            case 4: printf("Thursday\n");
            case 5: printf("Friday\n");
            case 6: printf("Saturday\n");
            case 7: printf("Sunday\n");
            default:printf("error\n");
        }
        return 0;
    }
    

    运行结果:

    Input integer number:4↙
    Thursday
    Friday
    Saturday
    Sunday
    error
    

    输入4,发现和第四个分支匹配成功,于是就执行第四个分支以及后面的所有分支。这显然不是我们想要的结果,我们希望只执行第四个分支,而跳过后面的其他分支。为了达到这个目标,必须要在每个分支最后添加break;语句。

    break 是C语言中的一个关键字,专门用于跳出 switch 语句。所谓“跳出”,是指一旦遇到 break,就不再执行 switch 中的任何语句,包括当前分支中的语句和其他分支中的语句;也就是说,整个 switch 执行结束了,接着会执行整个 switch 后面的代码。

    使用 break 修改上面的代码:

    #include <stdio.h>
    int main(){
        int a;
        printf("Input integer number:");
        scanf("%d",&a);
        switch(a){
            case 1: printf("Monday\n"); break;
            case 2: printf("Tuesday\n"); break;
            case 3: printf("Wednesday\n"); break;
            case 4: printf("Thursday\n"); break;
            case 5: printf("Friday\n"); break;
            case 6: printf("Saturday\n"); break;
            case 7: printf("Sunday\n"); break;
            default:printf("error\n"); break;
        }
        return 0;
    }
    

    运行结果:

    Input integer number:4↙
    Thursday
    
    

    由于 default 是最后一个分支,匹配后不会再执行其他分支,所以也可以不添加break;语句。

    最后需要说明的两点是:
    1 . case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。请看下面的例子:

    case 10: printf("..."); break;  //正确
    case 8+9: printf("..."); break;  //正确
    case 'A': printf("..."); break;  //正确,字符和整数可以相互转换
    case 'A'+19: printf("..."); break;  //正确,字符和整数可以相互转换
    case 9.5: printf("..."); break;  //错误,不能为小数
    case a: printf("..."); break;    //错误,不能包含变量
    case a+10: printf("..."); break;  //错误,不能包含变量
    

    2 . default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。

    如果感觉不错的话请点赞哟!!!

    展开全文
  • Python 用字典映射代替C语言switch case语句 python没有自己的swith case 语句,官方推荐的是使用if else 语句实现,但是用字典的映射方法也可以实现。 一、C语言的使用: colour =1 switch(colour){ case 0 : ...

    Python 用字典映射代替C语言switch case语句

    python没有自己的swith case 语句,官方推荐的是使用if else 语句实现,但是用字典的映射方法也可以实现

    一、C语言的使用:

    colour =1
    switch(colour){
      case 0 : colour_name='Red';
            break;
      case 1 : colour_name='Yellow';
            break;
      case 2 : colour_name='Blue';
            break;
      case 3 : colour_name='White';
            break;
      default: colour_name='Black';
            break;
    }
    

    解释:当colour=1的时候,匹配到case = 1,对应的值是:“Yellow”,如果colour=6,在colour没有对应的值,那么就执行default所对应的值"Black"。

    二、Python字典映射:

    colour = 1
    
    COLOUR_MAP = {
        0: 'Red',
        1: 'Yellow',
        2: 'Blue',
        3: 'White'
    }
    
    # 不推荐使用该方法,当Key不存在会报错
    # colour = COLOUR_MAP[colour]
    
    # 推荐使用此方法
    colour = COLOUR_MAP.get(colour, 'Black')
    print colour
    
    # 输出结果:Yellow
    

    解释:当colour=1的时候,对应的值为"Yellow"。若key不存在,返回默认值"Black"

    三、将字典映射的值更改为函数:

    def get_add(x, y):
        """加法"""
        return x + y
    
    
    def get_mul(x, y):
        """乘法"""
        return x * y
    
    
    def get_sub(x, y):
        """减法"""
        return x - y
    
    
    def get_div(x, y):
        """除法"""
        return x / y
    
    
    # 字典的映射
    COUNT_MAP = {
        0: get_add,
        1: get_mul,
        2: get_sub,
        3: get_div
    }
    
    count = 3
    
    result = COUNT_MAP.get(count, None)
    
    if result:
        result = result(10, 2)
        print '结果为:', result
    
    else:
        print 'Key不存在'
    
    # 输出结果:结果为: 5
    # 输入的count = 3, 调用的是get_div()函数, 若要输入count = 6,那么输出结果就是"Key不存在"
    

    用字典映射的好处就是可以让代码更简洁,看起来更优雅,维护起来更方便

    展开全文
  • C语言 switch case 语句

    2021-06-09 12:10:15
    C语言中switch条件语句也是一种很常用选择语句,和if条件语句不同,它只能针对某表达式值做出判断,从而决定程序执行哪一段代码。 原文地址:C语言 switch case 语句

    C语言中switch条件语句也是一种很常用的选择语句,和if条件语句不同,它只能针对某表达式的值做出判断,从而决定程序执行哪一段代码。
    原文地址:C语言 switch case 语句

    展开全文
  • 今天在完善通讯录项目时候发现一个小问题,就是在switch case 语句中定义变量时会报错,出现下面问题 函数中当时我是这样写 问题处在哪里呢?很简单,大家看下面例子 switch(num){ case 1: int ...

    今天在完善通讯录项目的时候发现一个小问题,就是在switch case 语句中定义变量时会报错,出现下面的问题

    这里写图片描述

    函数中当时我是这样写的
    这里写图片描述

    问题处在哪里呢?很简单,大家看下面的例子

          switch(num){
          case 1:
              int a = 1;
          case 2:
              printf("hello world\n");
    
          }   

    上面这种情况是不会通过编译的,原因是存在变量未初始化的问题,有下面两种情况:

    1. num = 1:执行case 1分支,a顺利的被初始化为1,执行完case 1之后,会顺序执行case 2,此时是没有任何问题的。 因为a在整个switch块中都是可见的,而不只是自身所在的case语句内部
    2. num = 2:跳过case 1 分支,a在2分支内是可见的,但是不能被引用,因为此时的a是“未初始化的”,编译器为了避免这种情况,就会在编译的时候直接报错。

    解决方法1

        5     switch(num){
        6     case 1:
        7         {int a = 1;}
        8     case 2:
        9         printf("hello world\n");
       10     case 3:
       11         {int a = 2;}                                                                                                            
       12     }
    

    这个可以通过编译,因为此时在case ‘b ‘中a不可见(因为a在语句快中),所以不会出现上述的“不一致”现象,因此编译顺利通过。

    解决方法2

        int a;
        switch(num){
        case 1:
            a = 1;
        case 2:
            printf("hello world\n");
        }   
    

    在整个switch块外声明变量。这样在无论开始跳转到哪个语句,都是可以直接引用a的。

    展开全文
  • C语言的学习中,我学习到switch case语句,我发现不能使用continue关键字。 代码如下: #include <stdio.h> int main() { int a; printf(“input integer number: “); scanf(”%d”,&a); switch (a) { ...
  • C语言switch case语句中定义变量问题

    千次阅读 2017-08-13 12:20:00
    严正声明: 作者:psklf ...欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任!这个问题需要分开讨论,C 语言和 C++ 标准定义是不同。 C++int Caset(int a) { ... case 1:
  • 跟大家讲解下有关c语言中“switch case语句怎么用?,相信小伙伴们对这个话题应该也很关注吧,现在...c语言中“switch case语句的用法是判断case后面表达式和switch后面表达式是否相匹配,其语法是“switch(...
  • # include void main(){int I, k, a, b, c, d, e, f,g;printf("请输入利润I:\n");... //此处强制为5261浮点类型,4102不然a一直是0,看你意思了b (I - 100000) * 75/1000;c (I - 200000) * 5/100;d (I -...
  • C语言switch-case语句break 功能正常代码 int score; if(score>=0 && score<=100){ switch(score / 10){ case 10: case 9:printf("A\n");break; case 8:printf("B\n");break; case 7:...
  • C语言中,case后不可直接跟多个常量,要如下图所示使用(不要忘记defalut) switch(int,char){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: //todo break; defalut: break; ST语言中,...
  • C语言中使用switch case语句判断成绩登记 #include <stdio.h> int main() { int a; printf("Please input a number(1-3)\n"); scanf("%d",&a); switch(a) { case 1: printf("A\n"); break...
  • C语言——switch case 语句判断学生成绩 switch case 讲解: switch(),在括号里输入所定义变量,接着在()后面输入一个{}大括号,把每一个分支语句放在大括号中。 switch()写法: int main() { int score;//先...
  • C语言中switch case语句的嵌套

    千次阅读 2015-10-24 20:57:06
    给一个含有嵌套switch case的一段完整代码:#include <stdio.h>int main(){ int n=1; int m=2; switch(n) { case 1: m++; case 2: n++; case 3: switch(n) { case 1: n++; case 2: m++; n+...
  • C语言中switch-case语句的使用

    万次阅读 2016-12-23 18:11:02
    c语言switch-case语句的使用注意事项。
  • C语言中switch case语句的实现

    千次阅读 2014-06-24 21:33:40
    在程序中我们经常用到switch case,它的用法就不再用多说了。计算switch中的值然后比较,跳转到相应的分支。...但实际使用时尤其在调试代码时,每次的case跳转都是直接跳转到匹配值的。这样就与用if。。。els
  • C语言的选择语句

    千次阅读 2019-04-15 23:42:31
    和switch case语句 if(选择条件) { 满足条件后所进行程序 } else { 满足条件后所进行程序 } 具体实现如下(判断三个数最大值) #include<stdio.h> #include<stdlib.h> int main() { ...
  • switch……case语句中,switch后面跟一个变量,这个变量不可以是字符数组,字符zhishen
  • int mm=2; switch(mm){ cout<<"hello"; case 1: { int nn =22; cout<<nn; break; } case 2: { cout<<mm; break; } } 如上例中的 cout<...语句没有放在任意的case中,编译器...
  • [img=https://img-bbs.csdn.net/upload/202001/08/1578421595_958661.png][/img] C语言入门小白,想请教各位大佬这个程序执行结果为什么是这样? 我以为会输出 3 2 4
  • c语言中“switch case”语句的用法是判断case后面的表达式和switch后面的表达式是否相匹配,一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break。c语言中“switch case”语句的...
  • C语言中我们经常使用条件判断语句进行条件判断和程序跳转,其中switch用法个人觉得比较好用而却很简洁,方便程序后期维护。听说他执行效率会比if语句的效率更高。当然了,有些地方必须得用到if语句才能...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,164
精华内容 465
关键字:

c语言的case语句

c语言 订阅