大家帮我看看这个习题怎么做,给我讲解一下,谢谢

#include"stdio.h"main(){intx,y,z;x=0;y=2;z=3;switch(x){case0:switch(y==2){case1:print... #include "stdio.h"
main()
{int x,y,z;
x=0;y=2;z=3;
switch(x)
{case 0:switch(y==2)
{case 1:printf("*");break;
case 2:printf("%");break;
}
case 1:switch(z)
{case 1:printf("$");break;
case 2:printf("*");break;
default:printf("#");
}
}
}
展开
 我来答
717370999
2008-11-06 · TA获得超过542个赞
知道小有建树答主
回答量:329
采纳率:0%
帮助的人:456万
展开全部
是这样的你看,首先你应该知道switch的用法吧,首先判断x的值,因为x等于0,所以跳到case0执行后面的语句,后面又跟了一个switch中间的式子是y==2,因为你定义的y是2,所以这个式子为真,这个式子的值变是1了,就跳转到case1执行,打印出一个*,跳出这个switch语句,因为你在判断switch(x)的时候执行case0后面的语句会一直执行知道碰到break,因为在case0后面的语句中没有break(后面的break是switch(y==2)的,注意区别),所以会继续执行case1,那么就有因为z的值是3,跳转到嵌入的的switch语句中,由于没有case3,所以跳到default语句,打印出一个#,程序结束,最后打印出的是*#,希望你明白了,不明白可以给我留言哦~~
ryophoenix
2008-11-06 · 超过57用户采纳过TA的回答
知道小有建树答主
回答量:456
采纳率:0%
帮助的人:0
展开全部
应该是输出“*#”吧!

先执行switch(x) ,由于x=0,所以执行case 0:switch(y==2),这里由于y==2为真(返回布尔值1),所以这句话也可行写成case 0:switch(1),所以就执行case 1:printf("*");break;注意这里的break:他只是跳出switch(1)这个switch而已,由于switch里面的case(0)后面没跟break,所以还要执行下面的case1,所以就来到case 1:switch(z) ,这里的z=3所以就执行default:printf("#"); 这样一来就输出:*#
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
data2009
2008-11-06 · 超过20用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:54.4万
展开全部
不知道楼主写这么一段程序想干什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式