通过代码测试,发现只有D可以运行,其他三个都编译报错了,所以答案是D。
测试代码如下:
参考链接:
C语言switch case语句详解
C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况。例如,输入一个整数,输出该整数对应的星期几的英
https://c.biancheng.net/view/1808.html
// https://c.biancheng.net/view/1808.html
//void testSwitch1() {
//
// int a=1,b=2,c1=3,c2=4,x=5,y=6;
//
// switch(a+b); //switch(a+b)后面有个分号,所以这里编译报错了
// {
// case 1:
// y=a+b;
// break;
// case 0:
// y=a-b;
// break;
// }
//
// printf("in testSwitch1(), y=%d\n",y);
//}
//void testSwitch2() { // 编译报错
//
// int a=1,b=2,c1=3,c2=4,x=5,y=6;
// switch(a*a+b*b) {
// case 3:
// case 1:
// y=a+b;
// break;
// case 3: // 前面已经使用了case 3,所以这里再次使用case 3会编译报错
// y=b-a;
// break;
// }
//
//}
//void testSwitch3() { // 编译报错
//
// int a=1,b=2,c1=3,c2=4,x=5,y=6;
// switch a { // 这里switch后面的表达式需要括在括号里,否则会编译报错
// case c1:
// y=a-b;
// break;
// case c2:
// x=a*b;
// break;
// default:
// x=a+b;
// }
//
//}
void testSwitch4() {
// https://c.biancheng.net/view/1808.html
int a=1,b=2,c1=3,c2=4,x=5,y=6;
switch(a-b) {
default:
y=a*b;
break;
case 3:
case 4:
x=a+b;
break;
case 10:
case 11:
y=a-b;
break;
}
printf("in testSwitch4(), y=%d\n",y);
}
int main(void) {
//testSwitch1();
//testSwitch2();
//testSwitch3();
testSwitch4();
return 0;
}
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/29822da1cb654c2e9b91e3d08c329da7.png?x-oss-process=image/auto-orient,1/resize,w_320,m_lfit)