一道C语言题

(19)若有定义语句int a, b;double x;则下列选项中没有错误的是( )
   A)switch(x%2) B)switch((int)x/2.0
   {case 0: a++; break; {case 0: a++; break;
   case 1: b++; break; case 1: b++; break;
   default : a++; b++; default : a++; b++;
   } }
   C)switch((int)x%2) D)switch((int)(x)%2)
   {case 0: a++; break; {case 0.0: a++; break;
   case 1: b++; break; case 1.0: b++; break;
   default : a++; b++; default : a++; b++;
} }

答案:C。
A、X是double型的 必须强制转换为int型的,你看case后面都是0,1;或者理解(x%2)结果是double型的,case后面也应该是double型;
B、((int)x/2.0 int/foalt 或者int/doulbe 至少 也应该是foalt 。
D、 (int)(x)%2 它的结果就是个整型。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-03
C:没有错误的选项
别的错误如下:
A:% (illegal, left operand has type 'double')
B:switch expression of type 'double' is illegal
D:illegal type for case expression追问

你这是干什么呢,能用中文交流吗

第2个回答  2012-02-03
C。。强制类型转换(类型)x;
% 前后必须整数
switch应与case一致
第3个回答  推荐于2020-12-23
C)追问

为什么,整形数据不是不能求余吗?

追答

不,是这样的:
A) double x 不能 %
B) switch((int)x/2.0) 输出 double 不能用在 switch
C) 对
D) case (1.0) 是double 不能用在case

本回答被网友采纳
第4个回答  2012-02-03
c
相似回答