c语言题目:为什么输出是的是"#&"?如果0代表假,1代表真,那么2代表什么?求详细解释@@

#include<stdio.h>voidmain(){inta=2,b=7,c=5;switch(a>0){case1:switch(b<0){case1:printf... #include<stdio.h>
void main()
{
int a=2,b=7,c=5;
switch(a>0)
{
case 1:switch(b<0)
{
case 1:printf("@");break;
case 2:printf("!");break;
}
case 0:switch(c==5)
{
case 0:printf("*");break;
case 1:printf("#");break;
case 2:printf("$");break;
}
default:printf("&");
}
printf("\n");
}
展开
 我来答
我不知道啊啊23
2015-08-16 · 超过31用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:52.4万
展开全部
真假可表示为非零和零,所以任何非零的都表示真,2也表示真
因为上面最外层switch中,每个case执行后并没有break,所以会继续向下执行
switch(a>0)会进入到case 1,进而执行switch(b<0),b不小于0,则case 1和case 2都不会执行,但因为没有break,所以程序会继续向下执行,执行switch(a>0)的case 0,c==5为真, 所以会执行switch(c==5)的case 1,这里有break则跳出本级switch,跳出后上一级switch还是没有break,所以继续执行default,所以输出为"#&"
追问
在 “case 0:switch(c==5)”的花括号里既然是真为什么不执行case2?
追答
因为case 1后有break,直接跳出本级switch,另外case 2在这个例子中确实没有什么意义~只是迷惑你的
hongyaofu
2015-08-16 · TA获得超过1088个赞
知道大有可为答主
回答量:1227
采纳率:87%
帮助的人:521万
展开全部
#include<stdio.h>
void main() {
int a=2,b=7,c=5;
switch(a>0) {
case 1:
switch(b<0) {
case 1:
printf("@");
break;
case 2:
printf("!");
break;
}
case 0:
switch(c==5) {
case 0:
printf("*");
break;
case 1:
printf("#");
break;
case 2:
printf("$");
break;
}
default:
printf("&");
}
printf("\n");
}

第一个switch(a>0)就是 switch(1),里面是switch无满足条件,未进去,但是case 1没有break (break在里面),就进入case 0了;

case 0里面是switch(c==5)也是 switch(1),进入内部case 1,输出“#”,但是case 0依然没得break,就进入default了;

default 打印:“&”

所以结果打印:"#&"

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卖蘑菇的灰太狼
2015-08-16
知道答主
回答量:11
采纳率:0%
帮助的人:7.1万
展开全部
这个简单,case 0:switch(c==5)这条开始是要看(c==5)的bool值,为1,所以打印"#",至于2,case“2”不是类型“bool”的切换条件的有效值,但是在while中也是当真来看的,你可以试一下。接下来就跳出了(c==5)的判断,你如果后面加个break就结束了,这里会继续再打印"&".
你明白了么^_^
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kcjby
2015-08-16
知道答主
回答量:4
采纳率:0%
帮助的人:4632
展开全部
2的目的就是忽悠你,没什么作用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式