找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 7956|回复: 8

[求助] 请教一个C语言问题

 火.. [复制链接]

2

主题

2

回帖

0

精华

初来乍到

积分
16
发表于 2010-8-12 14:30:18 | 显示全部楼层 |阅读模式

(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



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

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 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);
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

0

主题

1

回帖

0

精华

初来乍到

积分
22
发表于 2010-8-13 08:51:25 | 显示全部楼层
楼上的答案很精彩。

2

主题

2

回帖

0

精华

初来乍到

积分
13
发表于 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下面应该有个大括号。要不然就是错的。

2

主题

17

回帖

0

精华

铜牌会员

积分
35
发表于 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; ?

2

主题

2

回帖

0

精华

初来乍到

积分
16
 楼主| 发表于 2010-9-20 20:34:12 | 显示全部楼层
回复 5# a2010xxb


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

96

主题

158

回帖

4

精华

核心会员

积分
6513
发表于 2012-5-14 04:38:55 | 显示全部楼层
本帖最后由 diddom 于 2012-5-14 04:49 编辑

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

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

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

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

0

主题

42

回帖

0

精华

铜牌会员

积分
137
发表于 2012-11-9 12:37:01 | 显示全部楼层
这个应该是有写错吧?多数不会这样写吧?

4

主题

62

回帖

1

精华

铂金会员

积分
1523
发表于 2012-11-9 14:42:07 | 显示全部楼层
二楼不是给出答案了么,后面怎么还有选B的
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表