A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 chunhuayun 于 2015-9-22 11:50 编辑

分支语句结构 switch
        1)格式: switch(表达式)//必须是整数
                        {
                                case 常量表达式1:语句1;
                                case 常量表达式2:语句2;
                                case 常量表达式3:语句4;
                                default:语句5;
                        }
                原理:如果括号内的表达式的结果等于对应的常量表达式,则执行对应的语句块。如果没有对应的,则执行default
        2)举例:
         
  1.   int a= 2;
  2.     switch (a) {
  3.         case 1:
  4.             printf("A");break;
  5.         case 2:
  6.             printf("B");break;
  7.         case 3:
  8.             printf("C");break;
  9.         case 4:
  10.             printf("D");break;
  11.         default:
  12.             break;
  13.     }
复制代码


    结果:打印B

    3)case穿透
            a.指,某个case语句执行完成后并没有结束,而直接向下执行其他的case语句
            b.如何防止case穿透?
              在每个case语句结束后,加上一个break,其作用是结束switch语句块
           4)if 语句转换成 switch语句
           例子(if例子参见2.9)
     
  1.      int score = 70;
  2.     score = score / 10;
  3.     switch (score) {
  4.         case 0:
  5.         case 1:
  6.         case 2:
  7.         case 3:
  8.         case 4:
  9.         case 5:
  10.             printf("E");break;
  11.         case 6:
  12.             printf("D");break;
  13.         case 7:
  14.             printf("C");break;
  15.         case 8:
  16.             printf("B");break;
  17.         case 9:
  18.         case 10:
  19.             printf("A");break;
  20.         default:
  21.             break;
  22.     }
复制代码


        5)if语句与switch语句的选择
                a. if语句跟switch语句之间完全可以互相转换
                b. 分支比较多而且无法穷尽或进行大量的列举时,最好用if
                c.如果分支数量不是那么多,但是使用if代码量比较大的时候,可以选用switch

        6)switch语句使用注意事项
                a.表达式的类型(switch后括号内的内容)必须是整型或者是可以转换成整型的值。 可以
                放一个整型的变量(int a = 1; switch(a))或者常量(2),
                也可以放一个返回值是整型的表达式(如 switch(4+5)),或者可以转换为整型的表达式switch('a' + 'a')

                b.case 语句可以有多行语句,可以加括号,也可以不加大括号
                例如
      
  1.          case 1: a = 1;
  2.                                 b = 2;
  3.                                 c = 3;
  4.                                 break;
复制代码



                c.break语句是可选的

        7)case 后值的要求
                a.可以是常量表达式 如 3+4
                b.可以使常量 如10
                c.case 语句格式 case 常量表达式://空格和冒号必须有
                d.default语句的位置可以任意
                e.case语句的穿透问题,如果没有break的话,会向下穿透
                f.如果default放在switch语句的最后可以不加break,否则必须加break
                g.case 语句后,默认的第一句话,不能是定义变量.如果非要在第一句定义,那要加个大括号,把case后的语句块包含在内
        8)练习,实现一个计算器
  
  1. int a, b, result = 0;
  2.     char op;//操作符,

  3.     printf("input the expression:");
  4.     scanf("%d%c%d",&a,&op,&b);//中间不要输入空格了

  5.     switch (op) {
  6.         case '+':
  7.             result = a + b;
  8.             break;
  9.         case '-':
  10.             result = a - b;
  11.             break;
  12.         case '*':
  13.             result = a * b;
  14.             break;
  15.         default:
  16.             result = a / b;
  17.             break;
  18.     }
  19.     printf("result : %d", result);
复制代码




2 个回复

倒序浏览
switch 用好还是挺方便的
回复 使用道具 举报
总结不错,很全面。switch语句很好用,也很方便。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马