C++控制语句

如果要求在if后一对括号中的表达式在表示a 不等于 0 的时候的值为“真”,则能正确表示这一关系的表达式为( )。

A.a<>0

B.!a

C.a=0

D.a


a<>0就是a不等于0的意思
if(a<>0),括号内是一个true或者false的判断,true时运行if内的程序,false时略过
这是省略的写法,实际上是if ((a<>0)==true)
a不等于0的情况下值为真,即在表达式成立的情况下返回值为1,而a不等于0的表达式即为a<>0


2-2

能正确表示逻辑关系"a≥10 或 a≤0"的C语言表达式是()。

A.a>=10 or a<=0

B.a>=0 | a<=10

C.a>=10 && a<=0

D.a>=10 || a<=0


2-3

在嵌套使用if语句时,C语言规定else总是()。

A.和之前与其具有相同缩进位置的if配对

B.和之前与其最近的if配对

C.和之前与其最近的且不带else的if配对

D.和之前的第一个if配对


2-4

下列程序段的输出结果是()。

int main(void)
{   
      int  a = 2, b = -1, c = 2;
      
      if(a < b)
            if(b < 0)  
                  c = 0;
      else  c++;
      printf("%d\n",c);    
      
      return 0;
}

A.0

B.1

C.2

D.3


2-5

有如下程序:

#include <stdio.h>
int main()
{
    int a=2,b=-1,c=2;
    if(a)
        if(b<0) c=0;
    else c++;
    printf("%d\n",c);
    return 0;
}

该程序的输出结果是( )

A.0

B.1

C.2

D.3


2-6

下列程序的运行结果是

 

#include <stdio.h>

int main (void)

{ int a, b, c;

a = 20; b = 30; c = 10;

if (a < b)a = b;

if (a >= b)b = c;

c = a;

printf("a=%d, b=%d, c=%d\n", a, b, c);

return 0; }

A.a=20, b=10, c=20

B.a=30, b=10, c=20

C.a=30, b=10, c=30

if (a < b )条件判断只控制a = b这条语句,

如果条件不成立,即是a = b;不执行.

只执行b =c;c =a;这两语句.


 

2-7

有定义语句“int a=1,b=2,c=3,x;”,则以下各程序段执行后,x的值不为3的是

A.if(c<a)x=1; else if(b<a)x=2; else x=3;

B.if(a<3)x=3; else if(a<2)x=2; else x=1;

C.if(a<3)x=3; if(a<2)x=2; if(a<1)x=1;

D.if(a<b)x=b; if(b<c)x=c; if(c<a)x=a;

选项A首先判断if语句条件中表达式的值“3<1”为假,然后执行最近的else后面的语句,该else后面又为if-else语句,在这个if-else语句中首先判断该if语句条件中表达式的值“2<1”为假,程序执行其最近的else后面的语句,将3赋值给x。

 选项B中首先判断if语句条件中表达式的值“1<3”为真,然后执行最近的else后面的语句“x=3”,后面的else不再执行,最后x的值为3。 

选项C中,首先执行第一条if语句,由于“1<3”为真,执行此if后面的语句“x=3”,接着执行第二条if语句,由于“1<2”为真,执行此if后面的语句“x=2”,接着执行第三条 if语句,由于“1<1为假,后面的语句不执行,所以最后的x值为2不为3。

 选项D中;首先执行第一条if语句,由于“a<b”为真,执行此if后面的语句“x=b”;接着执行第二条if语句,由于“b<c”,为真,执行此if后面的语句“x=c”,接着执行第三条if语句,由于“c<a”为假,后面的语句不执行,所以最后的x值为c即为3。


2-8

下列程序运行时输入“2.0<回车>”,则输出结果是

 

#include <stdio.h> int main(void)

{ float x, y; scanf("%f", &x);

if (x < 0.0)y = 0.0;

else if ((x < 5.0) && (x != 2.0))y = 1.0 / (x + 2.0);

else if (x < 10.0)y = 1.0 / x;

else y = 10.0;

printf("%f\n", y); return 0; }

A.0.000000

B.0.250000

C.0.500000

D.1.000000


2-9

下列程序段运行后x的值是

 

int a = 0, b = 0, c = 0, x = 35;

if (!a)x--;

else if (b);

if (c)x = 3;

else x = 4;

A.34

B.4

C.35

D.3

C语言里面bool值和int是对应的,0对应false,非0对应true。a为0即false,!a则为true。后面那个,右边的表达式得到true,那么a等于1

  • 追问: !a是真的话要执行x--么
  • 追答: 对,if的判定为真,就要执行if语句,为假,就不执行
  • 追问: 那最后x是多少
  • 追答: 1、执行if(!a),因为!a为真,所以执行x--,此时x为34

    2、因为执行了if(!a),所以不执行if(b)
    3、判断if(c),因为c=0,所以为假,不执行x=3
    4、因为不执行if(c),所以执行x=4。
    5、最后x=4

2-10

下面的方法,当输入为2的时候返回值是多少?(     )

public int getValue(int i) {
         int result = 0;
         switch (i) {
            case 1:
                result = result + i;
            case 2:
                result = result + i * 2;
            case 3:
                result = result + i * 3;
        }
        return result;
 }

A.0

B.2

C.4

D.10

输入1,返回值为6
输入2,返回值为10

  • //输入为1的时候 int getValue(int i) { int result = 0; 
  • switch (i) {  case 1:   result = result + i; //result=0+1=1  
  • case 2:   result = result + i * 2; //result=1+1*2=3
  •  case 3:   result = result + i * 3;  //result=1+1*3=6 }  return result;    }
  • //输入为2的时候 int getValue(int i) { int result = 0; 
  • switch (i) {  case 1:   result = result + i; //输入为2,不走case1
  •  case 2:   result = result + i * 2; //result=0+2*2=4  
  • case 3:   result = result + i * 3;  //result=4+2*3=10 }  return result;   

2-11

下列叙述中正确的是()。

A.break语句只能用于switch语句

B.在switch语句中必须使用default

C.break语句必须与switch语句中的case配对使用

D.在switch语句中,不一定使用break语句

 break 语句的功能是跳出正在执行的条件语句或循环语句 。

它可以出现在 switch 语句中,也可以出现在循环语句中。

Default 语句的功能是如果所有的 case 后面的语句都不执行的时候就转去执行 default 后的语句 , 它可以省略不写 。

前面我们说过 break 语句可以出现在循环语句中,所以 C 是错误的。故 D 是正确的。


2-12

分数 1

设变量已正确定义,以下( )与其它switch语句不等价。

A.

switch(choice){
      case 1: price = 3.0; break;
      case 2: price = 2.5; break;
      case 3: price = 4.0; break;
      case 4: price = 3.5; break;
      default: price = 0.0; break;
}

B.

switch(choice){
      default: price = 0.0; break;
      case 4: price = 3.5; break;
      case 3: price = 4.0; break;
      case 2: price = 2.5; break;
      case 1: price = 3.0; break;
}

C.

switch(choice){
      case 1: price = 3.0; break;
      case 2: price = 2.5; break;
      case 3: price = 4.0; break;
      case 4: price = 3.5; break;
}

D.

price = 0.0;
switch(choice){
      case 1: price = 3.0; break;
      case 2: price = 2.5; break;
      case 3: price = 4.0; break;
      case 4: price = 3.5; break;
}


2-13

请读程序:

#include<stdio.h>

int 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;
     }
     printf("a=%d, b=%d\n",a,b);

     return 0;
}

上面程序的输出结果是:

A.a=2, b=1

B.a=1, b=1

C.a=1, b=0

D.a=2, b=2

i do not know


2-14

下列语句序列执行后,k 的值是( )

int x=6, y=10, k=5;
switch( x%y ){ 
        case 0: k=x*y;
      case 6: k=x/y;
      case 12: k=x-y;
      default: k=x*y-x;
}

A.60

B.5

C.0

D.54


2-15

若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

{ case c1: y=a-b; break;

case c2: x=a*d; break;

default: x=a+b;

}

C.switch (aa+bb)
{ case 3:
case 1: y=a+b; break;
case 3: y=b-a; break;
}

D.

switch(a-b)

{ default: y=a*b; break;

case 3: x=a+b; break;

case 10: case 11: y=a-b; break;

}

A正确,C中两个case3到底执行哪一个(会出现互相矛盾的现象),B中case后边是常量表达式不能是变量,D中case 3:case 4和case 10:case 11不能合起来写。


2-16

若int i=10;执行下面程序段后,变量i的值是( )。
switch ( i )
{
case 9: i += 1;
case 10: i += 1;
case 11: i += 1;
default: i += 1;
}

A.10

B.11

C.12

D.13

i=10; 进入开关语句,符合 case 10: i++; i 变 11.
由于没有 break; 语句, 所以 并不跳出去,而 继续下走,遇到 case 11,
符合 case 11:i++; 进入 case 11, i 变 12.
由于没有 break; 语句, 所以 并不跳出去,而 继续下走,遇到 default:
符合 default:,进入 default:i++; i 变 13。
.到达 开关语句终了。 所以 答案是 D) 13.


2-17

switch 语句的case 后面______。

A.只能是常量

B.只能是常量表达式

C.可以是常量或变量

D.可以是任意表达式

switch的case后面只能是常量

因为switch(选择因子变量)会与case后面的常量进行比较,来判断执行哪条分支。

所以case后面的值必须是常量。或者变量要加final关键字。变成常变量。


2-18

C语言的switch(表达式),其中表达式可以是( ).

A.只能为整数型

B.只能为实数型

C.可以是整数型和字符型

D.可以是任意类型

表达式的结果的类型可以是 整数类型,枚举类型,或者类类型(但该类需要有单一的转换到整数类型或(可以是字符类型,但不能是浮点类型、字符串、指针类型等)


2-19

若 int i=10; 执行下列程序后,变量 i 的正确结果是( )。

switch (i)

{ case 9: i+=1 ;

case 10: i+=1 ;

case 11: i+=1 ;

default : i+=1 ; }

A.10

B.11

C.12

D.13


2-20

以下程序段运行后,输出结果是:

    int x = 10;
    switch (x)
    {
        case 30: printf("A");break;
        case 10: printf("B");
        case 20: printf("C");break;
        case 40: printf("D");
    }
    printf("E");

A.ABCDE

B.ABCE

C.BCDE

D.BCE


2-21

给定以下程序段,如下:

int i=0, j=-1; switch(i) { case 0: j=1; case 2: j=2; default: j=5; } System.out.print("j="+j);

编译运行,结果是( )。、

A.j=-1

B.j=1

C.j=2

D.j=5

i do not know


2-22

下列代码段执行后,k的值是( )。

int i = 10, j = 18, k = 30; switch(j- i) { case 8 : k++; case 9 : k += 2; case 10: k += 3; default: k /= j; }

A.31

B.32

C.33

D.2

j = 18
i = 10
j - i = 8
所以switch(j-i)
先跳到分支case 8: 得到k = 31
由于没有break继续运行下去
k = k+2,得33,
继续得36,
再继续到default: k = k/i(这里是这样吗?我假设是这样)
则k = 33/10 = 3(k为整数)
所以最后 k = 3.
如果上面就是你题目中的default:k/i
那么k = 33。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值