关于c语言开关语句的几个小问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 11:50:08
#include<stdio.h>
main( )
{ char ch;
ch=getchar( );
switch(ch)
{ case ‘A’ : printf(“%c”,’A’);
case ‘B’ : printf(“%c”,’B’); break;
default: printf(“%s\n”,”other”);
}
}
当从键盘输入字母A时,运行结果为:
AB
为什么结果是AB,是A情况啊???
28.
#include <stdio.h>
main( )
{ int n=0;
while(n<=3)
switch(n)
{ case 0 : ;
case 1 : printf(“%d,”,n);
case 2 : printf(“%d,”,n); n=n+3; break;
default: printf(“**”);n=n+1;;
}
}
运行结果为:
0,0,**
为什么是两个0??
这个题不是我自己编写的,是这学期c语言考试题库中的题~~~~查找教材没有case后面不跟break的情况……所以我真是不明白~~~而不是稀里糊涂的胡写然后找人解答的…………

第一题的case ‘A’ : printf(“%c”,’A’);
和第二题的
case 0 : ;
case 1 : printf(“%d,”,n);
后都要加break;
switch选择语句,除了最后一个分支不加break之外,一般其他的都要加。像你的那种状况,肯定要在后面加break。
就像你说的,你加的话,你输入A会显示AB,那是因为条件对应的是第一句,他在执行完第一句的时候,由于没有break跳出,就会接着执行下一句,直到遇到break或是switch结束,才会停止执行。

的确,switch语句的格式你没学过么,多分支选择的时候,执行单一分支需要每个分支后加break

总觉得最近发来贴吧的C格式都不好,求人解答请先把格式做好,易读清爽别人才有心情帮你,或者你的老师没教好你怎么缩进么
#include<stdio.h>
main( )
{
char ch;
ch=getchar( );
switch(ch)
{
case ‘A’ : printf(“%c”,’A’); break;
case ‘B’ : printf(“%c”,’B’); break;
default: printf(“%s\n”,”other”); break;
}
}

哎。。我的错。。。。原来知道会自动消除句首的空格啊 。。。。

对于switch选择语句,他的执行是从满足条件的地方开始,到碰到的第一个break结束,如果一直没遇到,则执行到最后。所以执行单分支就在每个单分支后加一个break.

case1后面加个break