请教一个C语言问题
(20) 有以下程序main()
{ int i;
for(i=0;i<3;i++)
switch(i)
{ case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
}
}
执行后输出的结果是
A) 011122 B)012 C) 012020 D) 120
这个题是选什么,为什么呀? 选A
第一次执行:default: printf("%d",i);
第二次执行: case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
第三次执行:case 2: printf("%d",i);
default: printf("%d",i); 楼上的答案很精彩。 先B了
FOR循环I只有三个值。因为0<i<3
第一次循环i=0
case没有结果。执行default,输出i=0
第二次 i=1
case 有结果 执行case 1 输出i=1
第三次 i=2
case 有结果 执行case 2 输出i=2
所以结果就是012
还有这个程序FOR下面应该有个大括号。要不然就是错的。 0. default: printf("%d",i);
1. case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
2. case 2: printf("%d",i);
default: printf("%d",i);
为啥没有break; ? 回复 5# a2010xxb
这里是不要BREAK的,因为,上面有一个限制条件i<3呀! 本帖最后由 diddom 于 2012-5-14 04:49 编辑
这题的陷阱是Switch里的每个case都没有break;
因为没有break,会继续往下执行
假如你学c的语法又学vb语法,很容易误判
因为vb的Select Case条件式不用break 这个应该是有写错吧?多数不会这样写吧? 二楼不是给出答案了么,后面怎么还有选B的
页:
[1]