c语言题目求解析

x=0;y=2;z=3;switch(x){case0:switch(y==2){case1:prinrtf("*");break;case2:printf("%");b... x=0;y=2;z=3;
switch(x)
{case 0 :switch(y==2)
{case 1: prinrtf( "*" );break;
case 2: printf("%");break;
}
case 1 :switch(z)
{case 1: prinrtf( "$" );
case 2: printf("*");break;
default:printf("#");
}
}
以上语句段的输出结果是?
展开
 我来答
xcm980428
2013-08-08 · TA获得超过107个赞
知道答主
回答量:74
采纳率:0%
帮助的人:43.3万
展开全部

第一个,switch(x)。因为x=0,接下来判断case 0。那个switch(y==2),如果 y==2 成立,返回1;否则为0。现在明白了,switch的结果是1,所以进入case 1,打印星号。

没有 break,继续进行case 2;因为z的值为3,进入的是default条件,所以输出"#"


输出应该是  *#  。


有图有真相:

汤灵安9u
2013-08-08 · TA获得超过113个赞
知道答主
回答量:44
采纳率:0%
帮助的人:90.1万
展开全部
输出结果:*#

首先x满足x==0这一条件,进入case 0 :,
然后
switch(y==2)
{case 1: prinrtf( "*" );break;
case 2: printf("%");break;}
y==2是一个逻辑判断值,假为0真为1,;因为原先给y赋的值是2,条件为真,所以括号里面的值实际为1。
所以进入case 1,输出“*”;
然后看case 0 :switch(y==2)
{case 1: prinrtf( "*" );break;
case 2: printf("%");break;
这整一个case,没有break,如果条件符合它会一直输入,直到碰到break或者大括号}。
所以还要进入case 1里面

然后执行
switch(z)
{case 1: prinrtf( "$" );
case 2: printf("*");break;
default:printf("#");
}
因为此时条件值是z的值,z==3,所以进入的是default条件,所以输出"#"

于是你在屏幕上就看到*#。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liupeng1994824
2013-08-08
知道答主
回答量:14
采纳率:0%
帮助的人:6.5万
展开全部
*#

switch(x) 走到case 0
switch(y==2) 其中y==2的意思是判断y是否为2,它的结果是1 走到case 1
打印* break 跳出
注意到case 0 没有break ; 所以继续进行 case 1
switch(z) 走到 default
打印#

结果是*#
话说有两个printf你拼错了= =
追问
如果case 0有break,应该放在哪里,还有,y==2成立,应该返回真值,但1和2 都可以表示真值,为什么要选1呢
追答
一般放下一个case的前边 比如
switch(....)
{
case 1:
……
break;
case 2:
……
break;
default:
……
break;
}

至于y==2 返回的是 true 这个在printf("%d",true);结果是1
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lanjia92
2013-08-08 · 超过12用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:38.5万
展开全部
输出结果是%
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
summerjane0
2013-08-08
知道答主
回答量:7
采纳率:0%
帮助的人:5.6万
展开全部
输出结果为:*#
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式