rejoice51 发表于 2010-8-12 14:30:18

请教一个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

这个题是选什么,为什么呀?

阿杰 发表于 2010-8-12 16:33:36

选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);

chatxb 发表于 2010-8-13 08:51:25

楼上的答案很精彩。

luojian909 发表于 2010-8-13 11:53:39

先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下面应该有个大括号。要不然就是错的。

a2010xxb 发表于 2010-9-13 15:46:24

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; ?

rejoice51 发表于 2010-9-20 20:34:12

回复 5# a2010xxb


    这里是不要BREAK的,因为,上面有一个限制条件i<3呀!

diddom 发表于 2012-5-14 04:38:55

本帖最后由 diddom 于 2012-5-14 04:49 编辑

这题的陷阱是Switch里的每个case都没有break;

因为没有break,会继续往下执行

假如你学c的语法又学vb语法,很容易误判

因为vb的Select Case条件式不用break

X_son 发表于 2012-11-9 12:37:01

这个应该是有写错吧?多数不会这样写吧?

xxy19804 发表于 2012-11-9 14:42:07

二楼不是给出答案了么,后面怎么还有选B的
页: [1]
查看完整版本: 请教一个C语言问题