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

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

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

    展开全文
  • 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语句,我发现不能使用continue关键字。 代码如下: #include <stdio.h> int main() { int a; printf(“input integer number: “); scanf(”%d”,&a); switch (a) { ...

    在C语言的学习中,我学习到switch case语句,我发现不能使用continue关键字。

    代码如下:

    #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”);
    continue;
    case 5:printf(“Friday\n”);
    case 6:printf(“Saturday\n”);
    case 7:printf(“Sunday\n”);
    default:printf(“error\n”);
    }
    return 0;
    }

    此代码会出现如下错误:

    所以continue不能用于swich case语句中。

    continue有如下几个特点:

    continue语句一般形式为"continue"。
    其作用为结束本次循环。即跳出循环体中下面尚未执行的语句,对于while循环,继续求解循环条件。而对于for循环程序流程接着求解for语句头中的第三个部分expression表达式。 
    continue语句的作用是跳过循环本中剩余的语句,并到循环末尾。
    continue语句只用在for、while、do-while等循环体中, 常与if条件语句一起使用, 用来加速循环。

    ————————————————
    版权声明:本文为CSDN博主「ArchyLi」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/ArchyLi/article/details/52876578

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

    千次阅读 2017-08-13 12:20:00
    严正声明: 作者:psklf ...欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任!这个问题需要分开讨论,C 语言和 C++ 的标准定义是不同的。 C++int Caset(int a) { ... case 1:
  • 待续
  • c语言switchcase用法详解switch是“开关”的意思,它也是一种“选择”语句,但它的用法非常简单。switch是多分支选择语句。说得通俗点,多分支就是多个if。推荐学习:c语言视频教程从功能上说,switch语句和if语句...

空空如也

空空如也

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

c语言switchcase语句

c语言 订阅