首页 > 试题广场 >

假设变量 x 、 k 都已定义,下列语句片段中,无语法错误的

[单选题]
  • switch(x)
            {  case x>=90:  putchar('A'); 
               case x<60:   putchar('E');
            }
  • switch(x)
            {  case 1+2:   k='A'; 
               case 2*4:   k='B';
               defualt:    k='E';
            }
  • switch(x)
            {  case 2+x:   k=x-2; 
               case 3*x:   k=x+3;
               default:    k=0;
            }
  • switch(x)
            {  case 3.5:   k=0.5*x; 
               case 7.8:   k=8*x; 
               default:    k=0;
            }
推荐
本题选B考察switch-case语句的用法。
A选项,case后必须是整型类型的常量或常量表达式,如42或者'A'。整型类型包括:int、byte、short和char。x >= 90 和 x<60 中不含有常量值。因此A选项语法错误。
B选项:当switch后的表达式值和case后的常量值匹配相等后,case后面的代码将会被执行,直到遇到break语句被执行后跳出switch代码块。
②break不是必须的,如果没有break,则执行完当前case的代码块后会继续执行后面case代码块的内容。
default在switch语句内部放在任意的位置都可以。条件判断都是先按顺序比较其他非default值的case,当这些条件都不满足的时候,才跳转到default的相应代码处执行。没有匹配值的时候default就是进入点,进入default以后会和普通进入点一样,如果没有break继续执行下面语句。因此B选项正确。
如下:令x=5,则开始进入switch语句之后跳转到default的相应代码处运行。而default语句后没有break语句,因此会继续向下执行case 2*4的代码块,因此最终k的值为‘B’。

C选项,错误和A选项相同,表达式中必须含常量值。因此C选项语法错误。
D选项case后必须是整型类型的常量或常量表达式,不能使用float或double型。因此D选项错误。

知识点补充:
switch语句允许测试变量与值列表的相等性,每个值称之为case,程序会检查switch后面表达式的值并与case后面的值比对,如果相等则执行相应的代码块

switch在C语言中的语法如下:
switch(expression) {
   case constant-expression  :
      statement(s);
      break; /* 不是必须的 */
        
   case constant-expression  :
      statement(s);
      break; /* 不是必须的 */
        
   /* 可以有任意多个case语句 */
   default : /* 不是必须的 */
   statement(s);
}
注意事项:
  • switch语句中表达式expression只能返回整型类型的值:int、byte、short和char。如果需要比较的数据类型是double型或float型,则不能使用 switch结构。
编辑于 2020-02-12 14:26:06 回复(1)
D    
case后面只能是整型或字符型的常量或常量表达式
发表于 2020-02-11 17:22:38 回复(0)
D
case后面只能是整型或者字符型常量或常量表达式,A和C都不符合;当default不在最后一行时最好加上break使其跳转,B也不符合。
发表于 2019-12-11 16:36:11 回复(0)
c
发表于 2019-12-03 11:01:28 回复(0)
a
发表于 2018-06-29 00:05:31 回复(0)