国家二级C语言(运算符与表达式、基本语句)机试模拟试卷3
选择题
1.表达式(int)((double)9/2)-9%2的值是( )。(B)
A. 0
B. 3
C. 4
D. 5
解析:先将整型数据9强制转换成double型,然后除以2,得到的结果与double型保持一致,即为4.5,然后将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4-1的值为3,所以选择B选项。
2.若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是( )。(A)
A. (x-y<0||x-y>0)
B. (x-y<0)
C. (x-y>0)
D. (x-y=0)
解析:条件表达式“x=表达式1?表达式2:表达式3”的含义是:先求解表达式1,若为非0(真),则求解表达式2,将表达式2的值赋给x;若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给x。本题中与条件表达式:(x-y)等价的是(x-y<0||x-y>0)。
3.若变量已正确定义,在if(W)pfintf(\\(A)
A. a<>b+c
B. ch=getchar( )
C. a==b+c
D. a++
解析:选项A是非法的表达式,C语言中没有“<>”运算符。
4.若有定义语句:int x=10;,则表达式x-=x+x的值为( )。(C)
A. 0
B. -20
C. -10
D. 10
解析:算术运算符+的优先级高于-=,且-=的结合方向为自右向左,所以表达式x-=x+x可以表示成x=x-(x+x)=10-(10+10)=-10,选择C选项。
5.设有定义:int x=2;,以下表达式中,值不为6的是( )。(A)
A. 2*x,x+=2
B. x++,2*x
C. x*=(1+x)
D. x*=x+1
解析:A选项中逗号表达式先计算第一表达式2*x,然后计算表达式x+=2的值,即x=x+2即4,整个逗号表达式为第二个表达式的值4,所以选择A选项。B选项中首先计算逗号表达式中第一表达式x++,此时x为3,再执行第二个表达式2*x=2*3=6,所以逗号表达式为第二个表达式的值6。C选项的赋值表达式可以表示为x=x*(1+x)=2*(1+2)=6。D选项中的表达式可以表示为x=x*(x+1)=2*3=6。
6.若有定义语句:int x=12,y=8,z;,在其后执行语句z=0.9+x/y;,则z的值为( )。(A)
A. 1
B. 1.9
C. 2
D. 2.4
解析:先计算x/y,结果为1,然后计算0.9+1,结果为1.9,但由于变量z为整型,取值1,所以z的值为1。
7.表达式3.6-5/2+1.2+5%2的值是( )。(D)
A. 4.3
B. 4.8
C. 3.3
D. 3.8
解析:计算5/2,结果取整数值2。计算3.6-2,结果与高精度数据保持一致,即为1.6。计算1.6+1.2,结果为2.8。计算5%2,结果为1。计算2.8+1结果为3.8。所以选择D选项。
8.有定义语句:int a;long b;double x,y;,则以下选项中正确的表达式是( )。(B)
A. a=x<>y
B. a%(int)(x-y)
C. (a*y)%b
D. y=x+y=x
解析:C语言中没有“<>”运算符,所以A选项错误。“%”运算符的两个操作值必须为整型数据,所以B选项正确。a*y的结果为double型,所以C选项错误。不能将值赋给像x+y这样的表达式,所以D选项错误。
9.设变量已正确定义并赋值,下列表达式中正确的是( )。(A)
A. x=y+z+5,++y
B. int(15.8%5)
C. x=y*5=x+z
D. x=25%5.0
解析:B选项与D选项中取模运算符%的左右两个操作数均应为整数,所以错误。C选项中不能将x+y的值赋给表达式y*5,所以C选项错误。
10.以下不能将s所指字符串正确复制到t所指存储空间的是( )。
A
解析:“do{*t++=*s++;}while(*s);”不能因为当*s=’\0’时,while(*s)跳出循环,这样字符串结束标志’\0’没有复制给*t,造成*t不完整。注意,*t++=*s++是先执行*t=*s,然后才进行*t=t+1,s=s+1。B、c、D选项都能将’\0’复制过去。
11.设有定义:int k=0;,以下选项的4个表达式中与其他3个表达式的值不相同的是( )。(C)
A. ++k
B. k+=1
C. k++
D. k+1
解析:++k,先使得k的值自增1后再使用,k++是先取得k的值再将k的值自增1,所以C选项中表达式的值为O,而其他3个表达式的值均为1,所以选择C选项。
12.若有定义语句:int year=2009,*p=&year;,以下不能使变量year中的值增至2010的语句是( )。(B)
A. (*p)++;
B. *p++;
C. ++(*p);
D. *p+=1;
解析:由于自加运算符++的运算级别高于间接运算*的运算级别,所以B选项的表达式*p++不能使变量year中的值增至2010,因此选择B选项。
13.若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是( )。(B)
A. i=(a+k)<=(i+k);
B. i=a%11;
C. a=a++,i++
D. i=!a;
解析:取模运算符“%”、二元运算符具有左结合性,参与运算的量均为整型。B选项中的a变量是double实型,不符合规定。
14.若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是( )。(B)
A. x+1=y
B. ++x,y=x–
C. x=x+10=x+y
D. double(x)/10
解析:不能将变量赋给表达式,故A、C选项错误,D选项中强制类型转换表达式应写成(doub1e)x/10。
15.若变量均已正确定义并赋值,以下合法的C语言赋值语句是( )。(A)
A. x=y==5;
B. x=n%2.5;
C. x+n=i;
D. x=5=4+1;
解析:B选项中运算符“%”的前后必须为整数,C选项中不能将变量赋给表达式x+n,D选项中不能将表达式4+1赋给常量5。
16.表达式a+=a-=a=9的值是( )。(C)
A. 18
B. -9
C. 0
D. 9
解析:首先计算a=9,然后计算a-=9,即a=a-9,结果为0,然后计算a+=0,即a=a+0,所以最终结果为0。
17.设有以下语句:
int a=1,b=2,c;
c=a^(b<<2);
执行后,c的值为( )。(B)
A. 7
B. 9
C. 8
本文档预览:3600字符,共6828字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载