switch结构难住小弟了,谁来帮下

来源:百度知道 编辑:UC知道 时间:2024/06/08 08:48:15
一道题:
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")
}
结果是什么????
是一道2级C的题目

最重要的是:你写程序的结构就不准确。
应该:
main()
{int a=2,b=7,c=5;
switch(a>0)
{case 1:switch(b<0) //跳到case 0;
{case 1:printf("@");break;
case 2:printf("!");break;
}
case 0:switch(c==5) //跳到case 1;
{case 0:printf("*");break;
case 1:printf("#");break; //跳出switch;
case 2:printf("$");break;
}
default:printf("&"); //继续输出;
}
printf("\n") //输出回车哦!
}
这样就清楚了吧!
结果为:#&回车。

输出结果是#
由于a = 2,所以switch(a>0)等价于switch(1),后面的类似。
还有如果case后面没break则程序继续往后执行。

结果#&
a>0结果为1,所以走到 第四行的case 1
b<0结果为0,跳过@和!

因为没有break;
继续第8行的case0
c==5结果为1输出"#"

因为没有break;
继续default:输出"&"