c语言switch题目

Int n='c';

Switch(n++)

{default: printf("error"); break;

Case 'a': case 'A': case 'b': case 'B': printf("good"); break;

Case 'c': case 'C': printf("pass");

Case 'd': case 'D': printf("warn");

}
这条有两个疑问:
1.如果执行这句
Case 'a': case 'A': case 'b': case 'B': printf("good"); break;,
它是怎么执行的?
2.执行完Case 'd',已经是passwarn了,Case 'd'后面没有break,下面应该 执行default了啊,为什么答案是passwarn,而不是passwarnerror呢?
解释尽量详细点哦,太费解了。。。。。
Case 'd',执行完是该执行Case 'e'了啊,没有n满足任何一个case了呀,不是应该执行default了啊?怎么没有呢?

Case 'a': case 'A': case 'b': case 'B': printf("good"); break;
相当于
if (n=='a' || n=='A'|| n=='b'|| n=='B')
printf("good"); break;

default:是默认处理
也就是说,但条件n不满足任何一个case的时候,才会执行
当然和位置也有关

switch只是一次的分支选择而不是循环,类似与if、elesif、else
if (n=='a' || n=='A'|| n=='b'|| n=='B')
printf("good");
else if (n=='c'|| n=='C')
printf("pass");
else if (n=='d' || n=='D')
printf("warn");
else
printf("error");

程序只是运行了一次,n++对于switch来说,条件就是n,而不是n++
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-29
第一问就像楼上说的那样类似于一个if语句

是按照Case 'a': case 'A': case 'b': case 'B':

一个个依次判断下来的

下面说第二个问题,类似上面的
switch里面的语句也是顺序执行的,

由于楼主把default语句放在最上面了

所以在编译结束后,如果条件满足就不执行default了
(不满足的话,执行default)

相反,如果将default语句放在最下面(中间没有break)
那么顺序执行时会执行到default语句的

参考资料:【初级程序设计】

第2个回答  2010-07-29
default 是没有那个选择条件时才执行的,当已经执行了一次以后就不会执行了。
关于第1个问题,应该是当输入a,A,b,B中的某一个时,输出good,因为每次只能选 择一个字符,所以当是它们其中的一个时,就输出结果。
你的是循环吗,如果是循环的话应该会输出error
第3个回答  2010-07-29
1,
case 'a':
case 'A':
case 'b':
case 'B': printf("good"); break;
只要是'a''A''b''B'四个字符中的其中一个就会执行printf("good");

2,
switch语句没有循环功能,所以只执行了一次,不会执行到default
第4个回答  2010-07-29
Case 'a': case 'A': case 'b': case 'B': printf("good"); break;
这条语句它等同于
Case'a':case:'A':printf("good");break;
Case'b':case:'B':printf("good");break;
Swithch(n++)是没有意义的要实现循环就应该是
for()
{
Switch()
}
这样的形式。