#include <stdio.h> void main( ) { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++;

能不能帮我详细解释一下这个程序的运行过程及结果
#include <stdio.h>
void main( )
{ int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{ case 0: a++; break;
case 1: b++; break;
}
case 2: a++;b++; break;
case 3: a++;b++;
}
printf(“\na=%d,b=%d”,a,b);
}

1 运行结果:

a=2,b=1

2 分析:
#include <stdio.h>
void main( )
{ int x=1,y=0,a=0,b=0;
switch(x) //x=1,执行后面的case 1分支
{ case 1: //执行
switch(y) //y=0,执行后面的case 0分支
{ case 0: a++; break; //执行,a=1,跳到后面的case 2执行。
case 1: b++; break;
}
case 2: a++;b++; break; //执行。a=2,b=1。跳到后面的printf执行。
case 3: a++;b++;
}
printf("\na=%d,b=%d",a,b); //输出一行空行后,再输出a=2,b=1。
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-31
x=1 执行 case 1
y=0 执行 case0 得到a=1 然后 break 结束内层的switch
因为case 1 没有 break 所以执行 case 2
得到到 a=2 b=1 然后 break 结束外层switch
最后输出 a=2,b=1
第2个回答  2010-10-24
switch (x)中进入{ }若 x与case后的值相等 就像switch(1) 则进入case 1:后进行运行,case2 ,case 3等均忽略,只运行全部语句,一般有break;语句强制跳出 case 1:a++;break;//跳出
case 2:b++;break;//此句不执行 若
case 1:a++;//接着执行b++;
case 2:b++;
第3个回答  2011-09-14
#include <stdio.h>
void main( )
{ int x=1,y=0,a=0,b=0;
switch(x) // x=1 运行 case 1
{ case 1:
switch(y) //y=0 运行 case 0
{ case 0: a++; break;// a++ a =1
case 1: b++; break;
} //没有break 不会推出switch(x) 继续 case 2
case 2: a++;b++; break;// a++ a =2 b++ b=1 遇到break 推出switch(x)
case 3: a++;b++;
}
printf(“\na=%d,b=%d”,a,b); // a=2 b=1
}
看了注释 应该懂了吧
第4个回答  2011-09-14
首先x=1,进入case1;
y=0,进入case0,a++,则a = 1;
由于case1中没有break,所以进入case2:
a++;b++;则a = 2, b = 1;然后break,跳出switch(x);
最后打印,结果a = 2, b = 1。(一个break跳出一个Switch)

...<stdio.h> void main( ) { int x=1,y=0,a=0,b=0; switch(x) { case...
include <stdio.h> void main( ){ int x=1,y=0,a=0,b=0;switch(x) \/\/ x=1 运行 case 1 { case 1:switch(y) \/\/y=0 运行 case 0 { case 0: a++; break;\/\/ a++ a =1 case 1: b++; break;} \/\/没有break 不会推出swit...

...<stdio.h> void main( ) { int x=1,y=0,a=0,b=0; switch(x) { case...
switch(y){ case 0: a++; break;这个时候a=1;case 1: b++; break;} 这里后面没有break;所以会继续执行case 2:再下面a=2,b=1.

...main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y...
答案是c吧。当x=1;执行case 1:然后y=0在执行case 0;此时 a++ ,a=1;然后 break,跳出,跳出后注意:这里 在判断x时,case 1.后面的语句执行完,没有break。于是继续执行case2 这时,a++,b++ 所以 a=2,b=1.

...main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y_百...
int x=1,y=0,a=0,b=0;switch(x){ case 1: \/\/此时X=1,进入case1;switch(y){ case 0: a++; break; \/\/此时y=0,进入case0;,a++后break跳出switch(y)case 1: b++; break;} case 2: a++; b++; break; \/\/因为 switch(x) 的 case 1没...

一道简单C++ switch题 求解谢谢!
include <stdio.h> main ( ){ int x=1, y=0, a=0, b=0;switch (x){ case 1:switch (y){ case 0: a++; break;\/\/此处a会加1,跳出内层switch case 1: b++; break;} case 2: a++; b++; break;\/\/因为没有跳出外层swtich,所以还会执行a加1,b加1 } printf ("a=...

#include<stdio.h> #include<stdlib.h> #include<str
#include<stdio.h>#include<stdlib.h>#include<string.h>intANY_ten(intx,char*ch){inti,s=0;for(i=0;i<=strlen(ch)-1;i++){if(ch[i]>='0'&&ch[i]<='9')s=s*x+(ch[i]-'0');elseif(ch[... #include<stdio.h>#include<stdlib.h>#include<string.h>int ANY_ten(int x,char *...

...{ int x = 1 , a = 0 , b = 0 ; switch( x ) {
因为x=1,所以执行switch语句中case 1:a++;语句a=1 又因为case 1与case 2之间没有break;语句,所以继续执行case 2:a++;b++;语句,则a=2,b=1;然后执行printf( "%d,%d" , a , b ) ;输出2,1

C语言,选择结构,switch语句
int x = 1, y = 0, a = 0,b = 0;switch (x){ case 1: switch (y) \/\/首先跳转到这儿 { case 0: a++; break; \/\/接着跳转到这 case 1: b++; break; \/\/不执行 } break; \/\/对于每个case语句,一定不要忘了break;case 2: a++; b++; break; \/\/不执行 } ...

#include <stdio.h> void main() { int x=2; switch(1+x) { case 0...
结果是 worldthank you 因为1+x=3 case 3 : printf(“world”);后面没有break;所以一直执行下去了

#include <stdio.h>
首先,x=1时,进入第二个switch 因为y=0,所以执行case 0:的语句,a++之后a=1,b=0 因为break语句。所以跳出y的switch 而对于x的switch,case 1:时没有break,因此要继续执行下面的case 所以执行x的switch中的case2,即执行a++和b++,之后a=2,b=1 case 2:里有break,因此跳出当前switch ...

相似回答