一个关于二级C语言switch语句的问题
A switch(x+y)
{
case 10: u=x+y; break;
case 11:w=x-y; break ;
}
B switch x
{
default : u=x+y;
case10 : w=x-y; break;
case11 : u=x*y; break;
}
C switch (x*x+y*y)
{
case 3:
case3 : w=x+y; break;
case0 : w=y-x; break;
}
D switch (pow(x,2)+pow(y,2))
{
case1:case3: w=x+y; break;
case0:case5: w=x-y;
}
答案是A,我有几点不明白:
1 switch 语句可以没有default吗?什么情况下可以没有?
2 为什么有的switch语句没有break,如果没有break,switch语句可以停止吗?
3 C选项case3:后面什么也没有了,这对吗?
4 D选项case1:case3: w=x+y; break;
case0:case5: w=x-y;
为什么出现case1:case3两个呢?该怎样解决?
问题挺多,我都不怎么明白,高手不吝赐教,辛苦一下吧! 展开
2 首先,switch中的语句裤世可以没有break;如果当前语句没有胡猜肢break,那么程序将在接下兆码去第一个有break的语句时停止
3 case翻译是情况的意思 case 3:后面什么也没有是对的,但出现2次case 3就错了,因为每一种情况是唯一的。
4 不知道
关于你提到的几点问题,我一个告历衫个来回答:
switch 语句可以没有 default,这在语法上是被允许的。但需要注意的是,如果没有 default,那么就意味着程序中没有为 switch 语句所有可能的 case 情况下提供相应的处理代码。在大多数情况下,为了确保程序的完整性和健壮性,建议在 switch 语句中添加 default 语句,以便处理所有可能的 case 情况。
switch 语句中的 break 语句是用来终止 switch 语句的执行的。如果没有 break 语句,那么程序将会继续执行下一个 case 中的代码,直到遇到 break 或者 switch 语句结袜腔束烂搏为止。因此,如果没有 break 语句,switch 语句就不能够停止,而是会继续执行下去,直到遇到 break 或者 switch 语句结束为止。
C 选项中的 case 3:后面没有代码是正确的,因为在这个 switch 语句中,case 3 只是一个空的 case,没有需要执行的代码。这种空的 case 在某些情况下是有用的,比如可以用来占位或者将来扩展代码使用。
D 选项中的 case 1:case 3 是因为 case 1 和 case 3 的值相同,都是 1。在这种情况下,可以将两个 case 合并在一起,用逗号分隔开它们的值。这样做的目的是让程序在执行switch 语句时,如果找到了匹配的 case,就会执行相应的代码块,而不需要再判断是否与下一个 case 的值相同。
解决这个问题的方法是将 case 1 和 case 3 分开放置,或者使用其他的逻辑结构来处理不同的情况。