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

来源:百度知道 编辑:UC知道 时间:2024/06/20 15:02:15
#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("#");
}
}
}

应该是输出“*#”吧!

先执行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("#"); 这样一来就输出:*#

不知道楼主写这么一段程序想干什么

是这样的你看,首先你应该知道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语句,打印出一个#,程序结束,最后打印出的是*#,希望你明白了,不明白可以给我留言哦~~