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

有以下程序 #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); } 程序的运行结果是 A)a=1,b=0 B)a=2,b=2 C)a=1,b=1 D)a=2,b=1 求解释???

D
#include <stdio.h>
main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1: //x=1 执行下面
switch(y)
{
case 0: //y=0 执行下面
a++;//执行完后a=1
break; //跳出第二个switch
case 1:
b++;
break;
} //没有break往下执行
case 2:
a++; //执行完后a=2
b++; //执行完后b=1
break;//跳出第一个switch
case 3:
a++;
b++;
}//以上执行完,下面输出
printf("a=%d,b=%d\n",a,b);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-12
程序中已定义x=1,则执行switch(x)下的case1
后的语句switch(y),又已定义y=0,则执行其下的case 0语句。
执行a++后,a自动加1,跳出switch(y)语句,跳出switch(x)语句,输出a=1,b=0
第2个回答  2011-03-12
o

...<stdio.h> main() { int x=1,y=0,a=0,b=0; switch(x) { case 1...
include <stdio.h> main(){ int x=1,y=0,a=0,b=0;switch(x){ case 1: \/\/x=1 执行下面 switch(y){ case 0: \/\/y=0 执行下面 a++;\/\/执行完后a=1 break; \/\/跳出第二个switch case 1:b++;break;} \/\/没有break往下执行 case 2:a++; \/\/执行完后a=2 b++; \/\/执行完后b...

...void main( ) { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch...
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...

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

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

...void main( ) { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch...
我运行了,结果A=2,B=1;a++就是a自增1,a=a+1;case 1: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

#include<stdio.h> int main(){ char nb; int i = 0; int l = 0; f...
switch判断和if判断重复了,这样就会先满足case的条件,然后再判断是不是满足if的条件,只有两个都满足才会+1,就不对了。要么用switch判断,要么用if判断就行了

#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

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>
首先,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 ...

相似回答