第五章选择结构程序设计(2445)

  • 格式:doc
  • 大小:128.00 KB
  • 文档页数:13

1. 设ch是char型变量,其值为A,且有下面的表达式: ch=(ch>='A'&&ch<='Z')?(ch+32):ch

的值是(B)。

A. A

B. a

C. Z

D. z

2. 设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为(C)?。

A. 不定值

B. 4

C. 3

D. 1

3. 下面关于运算符优先顺序的描述中正确的是(C)。

A. 关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符

B. 逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符

C. 赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符

D. 算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符

4. 设有声明语句:int a=1,b=0;则执行以下语句后输出(B) 。

switch (a)

{

case 1:

switch (b)

{

case 0: printf("**0**");break;

case 1: printf("**1**");break;

}

case 2: printf("**2**");break;

}

A. **0**

B. **0****2**

C. **0****1****2**

D. 有语法错误

5. 设有int x,y; 以下语句判断x和y是否相等,正确的说法是该语句(B)。

if (x=y) printf(" x is equal to y.");

A. 语法错

B. 不能判断x和y是否相等

C. 编译出错

D. 能判断x和y是否相等

6. 以下有关switch语句的正确说法是(B)。

A. break语句是语句中必须的一部分

B. 在switch 语句中可以根据需要使用或不使用break语句

C. break语句在switch 语句中不可以使用

D. 在switch 语句中的每一个case都要用break语句

7. 设有:int a=1,b=2,c=3,d=4,m=2,n=2; 执行(m=a>b)&&(n=c>d)后,n 的值为( B)

A. 1

B. 2

C. 3

D. 4

8. 要用C语言表示数学关系式a≥b≥c,正确的表达式是( D )。

A.a>=b>=c

B.(a>=b)& (b>=c)

C.(a>=b) || (b>=c)

D.(a>=b)&& (b>=c)

9. 与y=(x>0?1:x<0?-1:0);的功能相同的if语句是( A )。

A. if(x>0) y=1;

else if(x<0) y=-1;

else y=0;

B. if(x)

if(x>0) y=1;

else if(x<0) y=-1;

else y=0;

C. y=-1;

if(x)

if(x>0) y=1;

else if(x==0)y=0;

else y=-1;

D. y=0;

if(x>=0)

if(x>0) y=1;

else y=-1;

10. 已知year 为整型变量,不能使表达式

(year%4==0&&year%100!=0)||year%400==0的值为"真"的数据是( A )。

A.1990

B.1992

C.1996

D.2000

11. 以下运算符中,优先级最高的运算符是( C )。

A.||

B.%

C.!

D.==

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

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

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

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

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

13. 有如下程序段int a=14,b=15,x;char c=′A′;

x=(a&&b)&&(c<′B′); 执行该程序段后,x的值为( D )。

A.ture

B.false

C.0

D.1

14. 在以下给出的表达式中,与while(E)中的(E)不等价的表达式是(C)。

A.(!E==0)

B.(E>0‖E<0)

C.(E==0)

D.(E!=0)

15. 有以下程序

main()

{int a=0,b=0,c=0,d=0;

if(a=1) b=1;c=2;

else d=3;

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

}

程序输出(D)。

A.0,1,2,0

B.0,0,0,3

C.1,1,2,0

D.编译有错

16. 以下关于逻辑运算符两侧运算对象的叙述中正确的是(D)。

A.只能是整数0或1

B.只能是整数0或非0的整数

C.可以是结构体类型的数据

D.可是任意合法的表达式

17. 有以下程序

Main()

{int k=5{switch(k)

{case1: case3:n+=1; break;

Default:n=0;k--;

Case2: case4:n+=2;k--;break;}

Printf(“%d”,n);

}while(k>0&&n<5);}

程序运行后的输出结果是(A)。

A.2345

B.235

C.2356

D.2356因为第一次k=5时,进入Default后,但没有break;就会顺序执行case2,所以第一个输出是2;

18. 表达式“0?(0?3:2):(10?1:0)”的值为(C)。

A.3

B.2

C.1

D.0

19. 以下程序的输出结果是(A)。

main()

{ int a=4,b=5,c=0,d;

d=!a&&!b||!c;

printf("%d\n",d);}

A.1

B.0

C.非0数

D.-1

20. 设实型变量为f1、f2、f3、f4的值分别为4,3,2,1整型变量ml、m2的值为1。表达式“(ml=fl>f2)&&(m2=f3

A.0

B.1

C.2

D.出错

21. 有如下条件表达式,若a=2、b=4、c=5 、d=7则表达式的值为(D)。a>b? a:c>d?c:d

A.2

B.4

C.5

D.7

22. 以下程序输出结果是(B)。

main()

{ int m=5;

if(m++>5) printf("%d\n",m);

else printf("%d\n",m--);

}

A.7

B.6

C.5

D.4

23. 下列if语句中,不正确的是(C)。

A.if(x>y);

B.if(x==y) x+=y;

C.if(x!=y) scanf("%d",&x) else x=1;

D.if(x

24. 表示关系x<=y<=z的c语言表达式为(A)。

A.(X<=Y)&&(Y<=Z)

B.(X<=Y)AND(Y<=Z)

C.(X<=Y<=Z)

D.(X<=Y)&(Y<=Z)

25. C语言中数组下标的下限是(B)。

A.1

B.0

C.视具体情况而定

D.无固定下限

26. 表达式:10!=9的值是(C)。

A.ture

B.非零值

C.1

D.0

27. 能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是( C )

A.(x>=1)&&(x<=10)&&(x.>=200)&&(x<=210)

B.(x>=1)││(x<=10) ││(x.>=200) ││(x<=210)

C.(x>=1) &&(x<=10) ││(x.>=200) &&(x<=210)

D.(x>=1)││(x<=10)&& (x.>=200) ││(x<=210)

28. 以下程序的运行结果是( B )

#include “stdio.h”

main()

{int a,b,d=241;

a=d/100%9;

b=(-1)&&(-1);

printf(“%d,%d”,a,b);

}

A.6,1

B.2,1

C.6,0

D.2,0

29. 请阅读以下程序:

main()

{int a=5 , b=0 , c=0;

if (a+b+c) printf(“* * *\n”);

else printf(“$ $ $\n”);

}

以上程序( C )

A.有语法错误不能通过编译

B.可以通过编译但不能直接通过连接

C.输出* * *

D.输出$ $ $

30. 有如下程序:

main()