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

#include <stdio.h>
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(“a=%d,b=%d\n”,a,b);
}帮忙解释一下这个程序吧!

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没有break跳出,继续执行a++,b++后break跳出

case 3: a++; b++;
}
最后结果,a=2,b=1
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-29
x=1 --> y=0 --> a++ --> a++;b++; --> printf(“a=%d,b=%d\n”,a,b);
下面对应结果:
x=1 y=0 a=1 a=2;b=1 a=2,b=1
第2个回答  2012-06-29
x=1 -- y=0, a+1
-- y=1, b+1
x=2 -- a+1, b+1
x=3 -- a+1,b+1,结束循环
最后输出a和b追问

x不是一直是1吗?怎么还会是2和3哪求赐教!

#include<stdio.h>
答案是:a=2,b=1 原因在程序中标出了 include<stdio.h> main(){ int x=1, y=0,a=0,b=0;switch(x) \/\/因为x=1所以就执行下面的case 1:{case 1: \/\/case 1后面为空,就继续执行下一条语句switch(y)switch(y) \/\/y=0 所以就执行case 0 {case 0: a++; break; \/\/ 执...

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

#include <stdio.h> main() { int x=1,y=0,a=0,b=0; switch(x) { case...
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没...

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

...{ 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

{int x=1,y=0,a=0,b=0; switch (x) {case 1:sw
2 1 不谢 过程是先执行switch (x)的case 1,进入switch (y)的case 1,a++,a等于了1;然后break跳出switch (y),进入switch (x)的case 2,a++,b++,所以a等于了2,b等于了1 然后break;

...main0 { int x=1,a=0,b=0; switch(x){ case 0: b++; case 1...
因为每条case后面没有break,所以从case 1挨个执行,因此答案是A

C语言,选择结构,switch语句
而case 1对应的语句是又是一个switch语句,此时的switch后边括号中的变量是y,由于y已经被赋值0,所以应该执行case 0所对应的语句,执行a++;后缀++是说执行完语句后变量值增加1.最后答案是a=1,b=0;int x = 1, y = 0, a = 0,b = 0;switch (x){ case 1: switch (y) \/\/首先跳转到...

switch语句的嵌套
你没有break;include<stdio.h> int main(){ int x=1,y=0;switch(x){ case 1:switch(y){ case 0:printf("first\\n");break;case 1:printf("second\\n");break;} break;\/***\/ case 2:printf("third\\n");} getch();return 0;} ...

#include <stdio.h>
第一个switch(x),因x=1,故进行case 1,执行switch(y),y=0,执行case 0,即a++,a=1,然后退出switch(x),因case 1,没有break,故会继续执行下面的语句,case 3(因case 2包含break,所以不执行),a++;b++;则输出a=2,b=1

相似回答