很纠结的C语言程序,请指点

#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);
}
运行结果是什么?,为什么啊

x = 1,执行

switch(y) {

case 0: a++; break;

case 1: b++; break;

}

y = 0,执行a++,此时a = 1,跳出switch(y),由于switch(x)的case 1:没有break语句,因此执行case 2: a++,b++,此时a = 2,b = 1,然后跳出switch(x),故程序输出结果是

a=2,b=1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-13
a=2,b=1
因为switch(x)的case 1语句没有break;
执行了switch(y)
{ case 0: a++; break;
case 1: b++; break;
}
后a=1,b=0;
在执行 case 2: a++;b++; break;
a=2,b=1
结束
第2个回答  2011-10-13
a=2,b=1
x=1运行case1,y=0运行case0:a++==1
由于case1无break再运行case2:a++==2,b++==1,break跳出
第3个回答  2011-10-13
结果 是 2, 1吧。
第4个回答  2011-10-13
a=2,b=1
switch(x)中case 1没有break;程序将继续运行到case 2
第5个回答  2011-10-13
结果 就是2 1 因为 case 1 中的switch{····}这后面没有break 所以就顺序执行到case 2 之后它后面有break 就跳出了 结束程序 这计算过程就不必说了吧 你慢慢琢磨就应该知道了
相似回答