1.有以下程序:
#include<stdio.h>
main()
{ int S,t,A=10;double 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为3;2*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。
异或也就是将两个值化成二进制,按位运算,如果同一位上的值相等(均为1或0),则结果为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=4
(double)4=4.0,(double)4意思是将int类型的4强制转换为 double型
(int)4.0=4,(int)4.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错误