计算机二级C语言基础选择易错题及答案解析(六)

1.有以下程序:

 #include<stdio.h> 
 main()
{ int S,t,A=10double B=6; 
 S=sizeof(A);
 t=sizeof(B)printf("%d,%d\n",S,t)} 

在VC6平台上编译运行,程序运行后的输出结果是()。

A.2,4

B.1,4

C.4,8

D.10,6

解析:
C语言中利用sizeof(函数判断数据类型长度,在VC6.0平台中,整型int占有4个字节,double型数据占有8个字节。

2.有以下程序

#include<stdio.h>
main()
{
unsigned char a=8,c;
c=a>>a;
printf("%d",c);
}

A、16
B、1
C、32
D、0

解析:
无符号整型变量a的值为8,二进制表示为000000,右移3位后为0000001,即十进制的1,所以输出1

3.设有定义,intx=2,以下表达式中,值不为6的是()
A x*=x+1
B x++,2x
C x
=(1+x)
D 2*x,x+=2

解析:
A:变形形式为:x=x*(x+1);结果为2*3=6;
B:x++,x为32*x=2*3=6,结果为6;
C:变形形式为:x=x*(1+x);结果为6;
D:2*x为4,但是x的值没有变;x+=2 变形为 x=x+2=2+2=4,结果为4;
考察逗号的运算,从左向右进行运算:D中只是进行2*x的运算,没有付给变量且x的值没有变化;

4.有以下程序:

#include<stdio.h>
main()
{
unsigned char a=2,b=4,c=5,d;
d=a|b;d&=c;
printf("%d\n",d);
}

程序运行后的输出结果是

A) 3
B) 4
C) 5
D) 6

解析:
将a的值转换成二进制为:0000 0010,b的值转换成二进制为:0000 0100,
将a、b进行按位或运算(参加计算的两个位只要有一个为1,那么运算结果为1),因此此时d的二进制为:0000 0110,
c的值转换成二进制为:00000101,接下来将d和c进行按位与运算(参加计算的两个位都为1,则结果为1,否则为0),
结果为:0000 0100,转换成十进制数结果为4

设有以下语句: int a=1,b=2,c; c=a^(b<<2); 执行后,C的值为______。

A.6
B.7
C.8
D.9

解析:
b=2表示的二进制数为00000010,经过移位操作得到00001000,异或操作”a^(00001000)”得到00001001,即十进制数9。
异或也就是将两个值化成二进制,按位运算,如果同一位上的值相等(均为10),则结果为0,如果同一位上的值不等,则结果为1,例1011^1111的结果为0100 

6.以下定义语句中正确的是()

A.int a=b=0;
B.char A=65+1;b=‘b’;
C.float a=1,*b=&a,*c=&b;
D.double a=0.0,b=1.1;

解析:
A选项中语句B变量还没有定义不能直接用于给a变量赋值,
c语句中*c=&b,因为变量b已经为指针变量,取指针变量b的地址,这时变量c应该是指针的指针。
d选项语句中a=0.0后面是分号不是逗号

7.若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是( )

A.++x,y=x–
B.x+1=y
C.x=x+10=x+y
D.double(x)/10

解析: 
在C语言的赋值表达式中,赋值对象必须是一个变量,而在选项B中其子表达式x+1代表的是一个临时常量,因此不能将y赋给x+1,选项B错误。
而选项C中由于“=”运算符是从右至左运算的,即原表达式相当于x=(x+10=x+y),所以也犯了对一个临时常量赋值的错误。
选项D中,将 x强制转换为double类型的表达式应该为(double)x,所以选项D也不正确。

8.表达式:(int)((double)9/2)-9%2的值是()
A、0
B、3
C、4
D、5

解析:
 这个表达式首先从左往右计算,首先9/2=4double4=4.0,(double4意思是将int类型的4强制转换为 double型
(int4.0=4,(int4.0又将double型的4.0强制转换为了int,即减号前结果为4;
(9%2=9%2=1,所以结果为4-1=3.

9.设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是( )
A.k++
B.k+=1
C.++k
D.k+1

解析:
++k 先使得k的值自增1后再使用k+ +是先取得k的值再将k的值自增1.所以C选项中表达式的值为0,而其他三个表达式的值均为1.所以选择A。

10.若定义有语句:int a=3, b=2, c=1; 以下选项()
A、a=(b=4)=3;
B、a=b=c+1;
C、a=(b=4) +c;
D、a=1+(b=c=4);

解析:
不能将变量或常量赋值给一个表达式,所以A错误
发布了53 篇原创文章 · 获赞 108 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Miracle1203/article/details/104273822