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
要详解啊!! 展开
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
要详解啊!! 展开
5个回答
展开全部
第一遍循环
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,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,那就是自增后的结果再输出。
展开全部
D
第一个是
当 i=0
case 0 当然要输出 0了,然后++,i =1了
因为没有 break 所以 case default 都会输出 1
循环 里i++ i=2了
case 2: 输出 2 同样 因为没有 break, default 会输出2
结果 01122
第一个是
当 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先加再用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嗯!同学你的答案选择D,
你第一次i = 0时,你可以知道switch进入case 0:执行,那么就会输出一个0出来。但是你在处理完这条语句的时候没有加入break;语句,那么根据switch语句的处理条件,就会执行case 2:语句那么就会输出一个1,。就此我们就应该选择D
剩下的你可以自己分析!如果有不懂还可以提问
你第一次i = 0时,你可以知道switch进入case 0:执行,那么就会输出一个0出来。但是你在处理完这条语句的时候没有加入break;语句,那么根据switch语句的处理条件,就会执行case 2:语句那么就会输出一个1,。就此我们就应该选择D
剩下的你可以自己分析!如果有不懂还可以提问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案为D吧
switch case语句分析
switch case语句分析
追问
当i=0的时候,不应该先执行case 0 么 printf("%d",i++); 里的 i++ i 不就成了1了么,怎么会还打印0啊?
追答
i++;
先将i赋值出去,再加加
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i=0;输出0,1
i=1;输出1
i=2;输出2,2
所以答案D
i=1;输出1
i=2;输出2,2
所以答案D
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询