itgle.com

2、执行下面程序段之后,x和y的值分别是: int x=1,y=1,m=1,n=1; switch(m) { case 0: x=x*2; case 1: { switch(n) { case 1: x=x*2; case 2: y=y*2; break; case 3: x++; } } case 2: x++; y++; case 3: x*=2; y*=2; break; default: x++; y++; }A.x=6,y=6B.x=2,y=1C.x=2,y=2D.x=7,y=7

题目

2、执行下面程序段之后,x和y的值分别是: int x=1,y=1,m=1,n=1; switch(m) { case 0: x=x*2; case 1: { switch(n) { case 1: x=x*2; case 2: y=y*2; break; case 3: x++; } } case 2: x++; y++; case 3: x*=2; y*=2; break; default: x++; y++; }

A.x=6,y=6

B.x=2,y=1

C.x=2,y=2

D.x=7,y=7


相似考题
更多“2、执行下面程序段之后,x和y的值分别是: int x=1,y=1,m=1,n=1; switch(m) { case 0: x=x*2; case 1: { switch(n) { case 1: x=x*2; case 2: y=y*2; break; case 3: x++; } } case 2: x++; y++; case 3: x*=2; y*=2; break; default: x++; y++; }”相关问题
  • 第1题:

    有以下程序

    #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
    解析:本题考查switch语句,首先,x=1符合条件case 1,执行switch(y)语句,y=0符合case 0语句,执行a++并跳出switch(y)语句,此时a=1。因为case 1语句后面没有break语句,所以向后执行case 2语句,执行a++,b++,然后跳出switch(x),得a=2,b=1。

  • 第2题:

    以下程序段的运行结果是( )。 include main() {int x=2,y=1: switch(x) {case 1: switch

    以下程序段的运行结果是( )。 include<stdio.h> main() {int x=2,y=1: switch(x) {case 1: switch(y) {case 0:printf("x=2,y=1\n");break; case 1:printf("y=1\n");break; } case 2:printf("x=2\n"); } }


    正确答案:x=2
    x=2

  • 第3题:

    请阅读以下程序

    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;

    }

    cout<<"a="<<a<<"b="<<b<<endl;

    }

    上面程序的输出结果是

    A.a=2,b=1

    B.a=1,b=1

    C.a=1,b=0

    D.a=2,b=2


    正确答案:A
    解析:本题考察switch语句的嵌套,以及break语句的使用规则,不再执行下面的case语句,如果没有break语句,则会顺序执行随后语句。据此,读程序可知,内层switch执行case 0分支,故a增1,跳出内层switch后,由于没有break语句;随后执行外层switch的case 2分支,a又增1,b增1。故答案为A。

  • 第4题:

    若a,b,c1,c2,x,y均是整型变量,正确的switch语句是______。

    A.switch(a+b); {case 1:y=a+b;break; case 0:y=a-b;break; }

    B.switch(a*a+b*b) {case 3; case 1:y=a+b;break; case 3:y=b-a;break; }

    C.switch a {case c1:y=a-b;break; case c2;x=a*b;break; default:x=a+b; }

    D.switch(a-b) {default:y=a*b;break; case 3:case 4:x=a+b;break; case 10:case11:y=a-b;break; }


    正确答案:D
    解析:由switch语句的格式排除A、C项,选项B中出现了两个相同的case标号。

  • 第5题:

    有以下程序includemain(){intx=1,y=0,a=0,b=0;switch(X){case1:switch(y){case0:a++;b

    有以下程序 #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
    解析: 本题考查switch语句,首先,x=1符合条件casel,执行switch(y)语句,y=0符合case 0语句,执行a++并跳出switch(y)语句,此时a=1。因为case 1语句后面没有break语句,所以向后执行case2语句,执行a++,b++,然后跳出switch(x),得a=2,b=1。

  • 第6题:

    若有如下程序: main() {int x=9,y=4,n=0; switch(x%2) {case 0:n++;break; case 1:n++; case 0:n++;break; } printf("%d\n",n); } 则程序运行后的输出结果是( )。

    A.1

    B.2

    C.3

    D.编译错误


    正确答案:D
    解析:一个switch语句中不能有两个相同的case分支。本题的switch语句中出现了两个case0,编译无法通过。所以应该选D。

  • 第7题:

    下列程序执行之后,将输出 public class exl9 { public static void main(string[] args) { int x=3; int y=7; switch(y/x){ case 1: y*=2; break; case 2: y*=3; break; case 3: y*=4; break; default: y=0; } System.out.print(y); } }

    A.28

    B.21

    C.14

    D.0


    正确答案:B

  • 第8题:

    若a、b、c1、c2、x、y均是整型变量,则正确的switch语句是( )。

    A.switch(a+b); { casel:y=a+b;break; case0:y=a-b;break; }

    B.switch(a*a+b*b) { case 3: case 1:y=a+b;break; case 3:y=b-a;break; }

    C.switch a {case c1:y=a-b;break; case c2:x=a*d;break; default:x=a+b; }

    D.switch(a-b) {default:y=a*b;break; case 3:case 4:x=a+b;break; case 10:case 11:y=a—b;break; }


    正确答案:D
    解析:switch语句后不能有分号,故选项A错误;switch语句中的常量不能在分支重复出现,故选项B错误;选项C中, switch后的表达式必须要加括号,case后的表达式必须是常量,故选项C错误;因此只有选项D正确。

  • 第9题:

    若有定义语句int a,b;double x;则下列选项中没有错误的是( )。

    A.switch(x%2) {case O:a++;break; case 1:b++;break; default:a++;b++; }

    B.switch((int)x/2.0) {case O:a++;break; case 1:b++;break; default:a++;b++; }

    C.switch((int)x%2) {case O:a++;break; case 1:b++;break; default:a++;b++; }

    D.switch((int)(x)%2) {case 0.O:a++;break; case 1.0:b++;break; default:a++;b++; }


    正确答案:C
    解析:C语言中switch语句中的表达式和case表达式都不能是浮点类型。所以选c。

  • 第10题:

    若有如下程序: main() { int k,x=0,y=0; for(k=0;k<=2;k++) switch(k) { case 0: X++; case 1: y++; case 2: X++;y++; } printf("%d,"d\n",x,y); } 则程序运行后的输出结果是( )。

    A.3,3

    B.2,2

    C.4,5

    D.2,3


    正确答案:C
    解析:本题使用了一个for循环,循环变量k从0递增到2共循环3次,循环体是一个switch语句,第一次循环k为0,所以从case0:处开始执行,变量x和y都自增两次。然后分别从case1:和case2:处执行,变量x共自增两次,y共自增3次,所以最后输出的结果是4,5。故应该选择C。

  • 第11题:

    下列程序的输出结果是(). 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++;break; } printf("a=%d,b=%d/n",a,b); }

    • A、a=1,b=0
    • B、a=2,b=1
    • C、a=1,b=1
    • D、a=2,b=2

    正确答案:B

  • 第12题:

    单选题
    有以下程序#include 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++;break; } printf(a=%d,b=%d,a,b);}程序的运行结果是(  )。
    A

    a=1,b=0

    B

    a=2,b=2

    C

    a=1,b=1

    D

    a=2,b=1


    正确答案: D
    解析:
    当执行swicth语句时,首先计算紧跟其后一对括号中的表达式的值,然后在switch语句体内寻找与该值吻合的case标号。如果有与该值相等的标号,则执行该标号后开始的各语句,包括在其后的所有case和default中的语句,直到switch语句体结束;每当执行到break语句时,立即跳出 switch语句体。switch语句通常总是和break语句联合使用,使得switch语句真正起到分支的作用。本题中,x=1,首先进入外层分支1,接下来y=0,再进入内层分支0,执行a++,此时a=1,接下来遇到break,跳出内层switch;由于外层分支中没有break语句,会继续执行外层分支2,执行a++,b++,此时a=2,b=1;然后遇到break语句,跳出外层switch。答案选择D选项。

  • 第13题:

    有以下程序:includemain(){intx=1,y=0,a=0,b=0;switch(x){case 1:switch(y){case 0:a+

    有以下程序: #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

  • 第14题:

    有下列程序: #include<stdi0.h> voidmain( ) { intx=1,y=0,a=0,b=0; switch(x) {case1: switch(y) { Case0:a++;break; case1:b++break; } case2:a++;b++;break; case3: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
    D。【解析】本题考查的是switch…case分支语句,x=1时,首先执行case1进行嵌套判断,y=0时switch(0)成立,执行case0,a自加1,遇到break,退出嵌套,接着执行case2,a自加为2,b自加为1,遇到break,结束循环,此时a=2,b=1,故选项D正确。

  • 第15题:

    如下程序的输出结果是______。includemain(){int x,a=3,b=4; for(x=0;x<3;x++) { switc

    如下程序的输出结果是______。 #include<stdio.h> main() { int x,a=3,b=4; for(x=0;x<3;x++) { switch(x) { case 0:a--; case 1:b--; case 2:break; case 3:a--;b--; } } printf("a=%d,b=%d\n",a,B) ; }

    A.a=2,b=2

    B.a=3,b=3

    C.a=1,b=2

    D.a=3,b=2


    正确答案:A

  • 第16题:

    若有以下变量和函数说明:includecharCh='*';void sub(int x,int y,char ch,double*

    若有以下变量和函数说明: #include<iostream.h> charCh='*'; void sub(int x,int y,char ch,double*Z) { switch(ch) { case'+':*Z=x+y;break; case'-':*Z=x-y;break: case'*':*Z=x*y;break; case'/':*z=x/y;break: } } 以下合法的函数调用语句是( )。

    A.sub(10,20,Ch,y);

    B.sub(1.2+3,2*2,'+',&Z);

    C.sub(sub(1,2,'+',&y),sub(3,4'+',&x),'-',&y);

    D.sub(a,b,&x,ch);


    正确答案:B

  • 第17题:

    有下列程序:includemain(){int x=1,y=0,a=0,b=0;switch(x){ case 1:switch(y){ case 0

    有下列程序: #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
    解析:本题考查的是用switch语句实现多分支选择结构,首先进入第一个switch(x)判断,进入case 1中进行嵌套判断,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接着执行case 2,a自加为2,b自加为1,遇到break,结束循环,此时a=2,b=1,故选项D)正确.

  • 第18题:

    以下程序运行后,y结果为______。 x=1.5 do case case x>2 y=2 case x>1 y=1 endcase return

    A.1

    B.2

    C.0

    D.语法错误


    正确答案:A
    解析:通过运行程序,因为变量x的值为1.5,因此当执行Case语句是,应该进入的程序部分为case x>1的那一部分,因此当程序运行之后,y的取值应该是1,因此程序运行之后的结果为1,正确选项为A。

  • 第19题:

    若a、b、c1、c2、x、y均是整型变量,则正确的switch语句是______。

    A.swich(a+b); { case 1:y=a+b;break; case 0:y=a-b;break; } case 3:y=b-a, break;

    B.switch(a*a+b*b) { case 3: case 1:y=a+b;break; }

    C.switch a { case c1:y=a-b;break; case c2:x=a*d;break; default:x=a+b; }

    D.switch(a-b) { default:y=a*b;break; case 3:case 4:x=a+b;break; case 10:case 11:y=a-b;break; }


    正确答案:D

  • 第20题:

    请阅读以下程序 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; } cout<<"a="<<a<<"b="<<bend1; } 上面程序的输出结果是

    A.a=2, b=1

    B.a=1, b=1

    C.a=1. b=0

    D.a=2. b=2


    正确答案:A
    解析:本题考察switch语句的嵌套,以及break语句的使用规则,即break中断当前的执行流,不再执行下面的case语句,如果没有break语句,则会顺序执行随后语句。据此,读程序可知,内层switch执行case 0分支,故a增l,调出内层switch后,由于没有break语句,随后执行外层 switch的case 2分支,a又增1,b增1。故答案为A。

  • 第21题:

    若a,b,c1,c2,x,y均是整型变量,正确的switch语句是( )。

    A.switch(a+b)

    B.switch(a*a+b*b) { case:y=a+b;break; { case 3: case:y=a-b;break; case 1:y=a+b;break; } case 3:y=b-a;break; }

    C.switcha

    D.switch(a-b) { casec1:y=a-b;break; { default:y=a*b;break; casec2:x=a*b;break; case 3:case4:x=a+b;break; default:x=a+b; case 10:case 11:y=a-b;break; } }


    正确答案:D
    解析:本题考查switch语句的语法规则。使用switch语句应该注意的问题:①整型表达式包括字符型或枚举型表达式。②在同一switch语句中,各个常量表达式的值不能相同。③每个case分支可以有多条语句,但不必用{}。④每个case语句只是一个入口标号,并不能确定执行的终点,因此每个case分支的最后应该加break语句,用来结束这个switch结构,否则会从入口点开始一直执行到switch结构的结束点。⑤当若干个分支需要执行相同操作时,可以使多个case分支共用一组语句。⑥如果在switch语句中使用字符常数,则它们自动被转换成整型值。根据以上注意点以及switch的语法规则,可知:对于选项A,case后面少了整型常量表达式>,故不正确。对于选项B,出现两个case后面的整型常量表达式>的值相等,故也不正确。对于选项C,switch后面的整型表达式>应该用括号括起来,故也不正确

  • 第22题:

    请阅读以下程序:includemain(){ int x=1,y=0,a=0,b=0;switch(x){ case 1:switch(y){ c

    请阅读以下程序: #include<stdio.h> main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0:a++;break; case 2: a++,b++;break;} printf("a=%d,b=%d\n" ,a,b); 上面程序的输出结果是( )。

    A.a=2,b=1

    B.a=1,b=1

    C.a=1,b=0

    D.a=2,b=2


    正确答案:A
    解析:switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时则执行default后面的语句。注意:if语句及if嵌套语句的使用。

  • 第23题:

    单选题
    有以下程序#include 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,a,b);}程序的运行结果是(  )。
    A

    a=2,b=1

    B

    a=2,b=2

    C

    a=1,b=1

    D

    a=1,b=0


    正确答案: C
    解析:
    当执行swicth语句时,首先计算紧跟其后一对括号中的表达式的值,然后在switch语句体内寻找与该值吻合的case标号。如果有与该值相等的标号,则执行该标号后开始的各语句,包括在其后的所有case和default中的语句,直到switch语句体结束;每当执行到break语句时,立即跳出 switch语句体。switch语句通常总是和break语句联合使用,使得switch语句真正起到分支的作用。本题中,x=1,首先进入外层分支1,接下来y=0,再进入内层分支0,执行a++,此时a=1,接下来遇到break,跳出内层switch;由于外层分支中没有break语句,会继续执行外层分支2,执行a++,b++,此时a=2,b=1;然后遇到break语句,跳出外层switch。答案选择A选项。

  • 第24题:

    单选题
    若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch语句是(  )。
    A



    switch(a+9)
    {
     case c1:y=a-b;
     case c2:y=a+b;
    }

    B



    switch a*b
    {
     case 10:x=a+b;
     default:y=a-b;
    }

    C



    switch(a+b)
    {
     case1:case2:case3:y=a+b;break;
     case0:case4:y=a-b;
    }

    D



    switch(a*a+b*b)
    {
     default:break;
     case 3:y=a+b;break;
     case 2:y=a-b;break;
    }


    正确答案: A
    解析:
    A项错误,case后面的应该为整形或字符型常量;B项错误,switch后面的表达式需要在括号内;C项错误,case和后面的常量表达式应该由空格隔开。答案选择D选项。