C语言的一道题目,求大神解答

有如下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:printf("%d",i++);case2:printf("%d",i... 有如下程序
main( )
{int
i;
for(i=0;i<3;i++)
switch(i)
{  case
0:printf("%d",i++);
case
2:printf("%d",i);
default:
printf("%d",i);
}}
程序运行后的输出结果是( )。
A)022111

B)021021

C)000122

D)01122

要详解啊!!
展开
 我来答
chiqp1986
2013-07-25 · TA获得超过270个赞
知道小有建树答主
回答量:326
采纳率:0%
帮助的人:193万
展开全部
第一遍循环
i=0,switch:case 0,输出0,且i++,i=1,没有break所以case 2继续,输出1,default也继续,输出1,最后for的i++,i=2
第二遍循环
i=2,switch:case 0,不符合,case 2符合,输出2,default继续,输出2,最后for的i++,i=3。
i=3,所以循环结束
结果就是01122,选择D
追问
当i=0的时候,不应该先执行case 0 么   printf("%d",i++);  里的   i++   i  不就成了1了么,怎么会还打印0啊?
追答
i++,是执行后i自增。如果是++i,那就是自增后的结果再输出。
stomachcao
2013-07-25 · TA获得超过6261个赞
知道大有可为答主
回答量:2276
采纳率:75%
帮助的人:718万
展开全部
D
第一个是
当 i=0
case 0 当然要输出 0了,然后++,i =1了
因为没有 break 所以 case default 都会输出 1

循环 里i++ i=2了
case 2: 输出 2 同样 因为没有 break, default 会输出2
结果 01122
追问
不是printf("%di ",i++);,变成了1了么,是先输出还是先执行i++呢?
追答
这个应该是 i++ 和 ++i的 区别吧,i++ 先用再加,++i先加再用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yajuntiantian
2013-07-25 · TA获得超过483个赞
知道小有建树答主
回答量:666
采纳率:0%
帮助的人:152万
展开全部
嗯!同学你的答案选择D,

你第一次i = 0时,你可以知道switch进入case 0:执行,那么就会输出一个0出来。但是你在处理完这条语句的时候没有加入break;语句,那么根据switch语句的处理条件,就会执行case 2:语句那么就会输出一个1,。就此我们就应该选择D
剩下的你可以自己分析!如果有不懂还可以提问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zcl19901011
2013-07-25 · TA获得超过689个赞
知道小有建树答主
回答量:389
采纳率:100%
帮助的人:311万
展开全部
答案为D吧
switch case语句分析
追问
当i=0的时候,不应该先执行case 0 么   printf("%d",i++);  里的   i++   i  不就成了1了么,怎么会还打印0啊?
追答
i++;
先将i赋值出去,再加加
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友792c87c
2013-07-25
知道答主
回答量:1
采纳率:0%
帮助的人:1467
展开全部
i=0;输出0,1
i=1;输出1
i=2;输出2,2
所以答案D
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式