关于C语言switch语句的一道题!
若变量的值已正确定义,那么以下语句段的输出结果是()x=0;y=2;z=3;switch(x){case0:switch(y=2){case1:printf("*");b...
若变量的值已正确定义,那么以下语句段的输出结果是( )
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("$");
case 2: printf("*");
default: printf("#");
}}
该怎么做?
选项是
A%$
B#*
C*#
D**$ 展开
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("$");
case 2: printf("*");
default: printf("#");
}}
该怎么做?
选项是
A%$
B#*
C*#
D**$ 展开
5个回答
展开全部
switch(x)
{case 0: switch(y=2)
{case 1: printf("*");break;
case 2: printf("%");break;}
case 1: switch(z)
{case 1: printf("$");
case 2: printf("*");
default: printf("#"); }
}
第一个switch(x)->case0
case0:switch(y=2)注意括号中得到的是bool值,即0或1,这里是1,所以printf(“*”)
由于case0没有break;顺序执行下面case1:switch(z),z=3,所以选择default,printf(“#”)。
所以最后答案是:C, *#
{case 0: switch(y=2)
{case 1: printf("*");break;
case 2: printf("%");break;}
case 1: switch(z)
{case 1: printf("$");
case 2: printf("*");
default: printf("#"); }
}
第一个switch(x)->case0
case0:switch(y=2)注意括号中得到的是bool值,即0或1,这里是1,所以printf(“*”)
由于case0没有break;顺序执行下面case1:switch(z),z=3,所以选择default,printf(“#”)。
所以最后答案是:C, *#
展开全部
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("$");
case 2: printf("*");
default: printf("#"); }
}
这样处理一下结构就很清楚啦,结果应该是显示*。
switch(y=2)相当于switch(1)。
switch(x)
{case 0: switch(y=2)
{case 1: printf("*");break;
case 2: printf("%");break;}
case 1: switch(z)
{case 1: printf("$");
case 2: printf("*");
default: printf("#"); }
}
这样处理一下结构就很清楚啦,结果应该是显示*。
switch(y=2)相当于switch(1)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼下正解,y=2是一个赋值语句,式子本身也有值,非0,即1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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("$");
case 2: printf("*");
default: printf("#");
}
}
这样是不是好看的多了?
输出结果是%#
switch是单纯的比较,x值为0,与case 0匹配,执行switch(y=2)y=2与case 2匹配,执行输出%。由于case 0后面的语句没有break;所以顺序向下执行case 1: switch(z),z=3,与case 1和case 2不匹配,执行default输出#
switch(x)
{case 0: switch(y=2)
{case 1: printf("*");break;
case 2: printf("%");break;}
case 1: switch(z)
{case 1: printf("$");
case 2: printf("*");
default: printf("#");
}
}
这样是不是好看的多了?
输出结果是%#
switch是单纯的比较,x值为0,与case 0匹配,执行switch(y=2)y=2与case 2匹配,执行输出%。由于case 0后面的语句没有break;所以顺序向下执行case 1: switch(z),z=3,与case 1和case 2不匹配,执行default输出#
追问
你说的非常好,但是选项中没有你说的答案!是不是你哪一点疏忽了?
追答
这道题我经过TC编译运行过啊。确实是%#,如果答案里没有的话,那就选*#吧。就是表达式y=2的值为1. 这题可能有毛病。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案是%#
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询