《国家二级C语言运算符与表达式基本语句机试模拟试卷1-真题(含答案与解析)-交互.docx》由会员分享,可在线阅读,更多相关《国家二级C语言运算符与表达式基本语句机试模拟试卷1-真题(含答案与解析)-交互.docx(9页珍藏版)》请在第壹文秘上搜索。
1、国家二级C语言(运算符与表达式、基本语句)机试模拟试卷1(总分62,做题时间90分钟)1 .选择题1.表达式(int)(double)92)9%2的值是()。ISSS_SING1.E_SE1A0B3C4D5分值:2答案:B解析:先将整型数据9强制转换成CIOUble型,然后除以2,得到的结果与double型保持一致,即为4.5,然后将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4一1的值为3,所以选择B选项。2 .若有定义intX,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x+):(y+)中的条件表达式(-y)等价的是()。ISSSSING1.ESElA(x一y
2、0)B(Xy0)D(xy=0)分值:2答案:A解析:条件表达式“x=表达式1?表达式2:表达式3”的含义是:先求解表达式1,若为非0(真),则求解表达式2,将表达式2的值赋给x;若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给X。本题中与表达式1:(Xy)等价的是(Xy)O3.若变量己正确定义,在if(w)prinff(%dn,k);中,以下不可替代W的是()。ISSSSING1.ESElAabcBch=getchar()Ca=b+cDa+分值:2答案:A解析:选项A是非法的表达式,C语言中没有运算符。4.若有定义语句:intx=10;,则表达式x-=x+x的值为()OISSSSI
3、NG1.ESElAOB-20C一10D10分值:2答案:C解析:算术运算符+的优先级高于一二,且一二的结合方向为自右向左,所以表达式X一二x+x可以表示成x-x一(x+x)=10(10+10)=一10,选择C选项。5.设有定义:intx=2;,以下表达式中,值不为6的是()0ISSS_SING1.E_SE1A2*x,x+=2Bx+,2*xCX*=(l+x)Dx*=x+l分值:2答案:A解析:A选项中逗号表达式先计算第一表达式2*x,然后计算表达式x+=2的值,即x=x+2即4,整个逗号表达式为第二个表达式的值4,所以选择A选项。B选项中首先计算逗号表达式中第一表达式x+,此时X为3,再执行第二
4、个表达式2*x=2*3=6,所以逗号表达式为第二个表达式的值6。C选项的赋值表达式可以表示为x=x*(l+x)=2*(l+2)=6D选项中的表达式可以表示为x=x*(x+l)=2*3=66.若有定义语句:intx=12,y=8,z;,在其后执行语句z=0.9+x/y;,则Z的值为()。ISSS_SING1.E_SElA1B1.9C2D2.4分值:2答案:A解析:先计算xy,结果为1.然后计算091,结果为1.9,但由于变量Z为整型,取值1,所以Z的值为1。7.表达式36T2+1.2+5%2的值是()。SSSSING1.ESElA4.3B4.8C3.3D3.8分值:2答案:D解析:计算5/2,结
5、果取整数值2。计算3.6-2,结果与高精度数据保持一致,即为1.60计算1.6+1.2,结果为2.8o计算5%2,结果为1。计算2.8+1结果为3.8o所以选择D选项。8.有定义语句:inta;longb;doublex,y;,则以下选项中正确的表达式是()。ISSS_SING1.E_SE1Aa=xyBa%(int)(-y)C(aISSSSING1.ESElAdo*t+=*s+;while(*s);Bfor(i=0;ti=si;i+);Cwhile(*t=*s)t+;s+Dfor(i=0,j=0;ti+=sj+;);分值:2答案:A解析:do*t+=*s+;while(*s);”不能因为当*s
6、=解0时,while(*s)跳出循环,这样字符串结束标志0没有复制给*t,造成t不完整。注意,*t+=*s+是先执行t=*s,然后才进行t=t+1.S=S+1。B、C、D选项都能将0复制过去。11.设有定义:intk=0;,以下选项的4个表达式中与其他3个表达式的值不相同的是()oy)%bDy=x+y=x分值:2答案:B解析:C语言中没有“”运算符,所以A选项错误。“”运算符的两个操作值必须为整型数据,所以B选项正确。a*y的结果为double型,所以C选项错误。不能将值赋给像x+y这样的表达式,所以D选项错误。9.设变量已正确定义并赋值,下列表达式中正确的是()。ISSSSING1.ESEl
7、Ax=y+z5,+yBint(15.8%5)Cx=y*5=x+zDx=25%5.0分值:2答案:A解析:B选项与D选项中取模运算符的左右两个操作数均应为整数,所以错误。C选项中不能将x+y的值赋给表达式y*5,所以C选项错误。10.以下不能将S所指字符串正确复制到t所指存储空间的是()oISSSSING1.ESElA+kBk+=lCk+Dkl分值:2答案:C解析:+k,先使得k的值自增1后再使用,k+是先取得k的值再将k的值自增1.所以C选项中表达式的值为0,而其他3个表达式的值均为1.所以选择C选项。12.若有定义语句:intyear=2009,*p=&year;,以下不能使变量year中的
8、值增至2010的语中是()。ISSSSING1.ESElA(*p)+;B*p+;C+(*p);D*p+=l;分值:2答案:B解析:由于自加运算符+的运算级别高于间接运算*的运算级别,所以B选项的表达式*p+不能使变量year中的值增至2010,因此选择B选项。13.若有定义:doublea=22;inti=0,k=18;,则不符合C语言规定的赋值语句是()。ISSS_SING1.E_SElAi=(a+k)=(i+k);Bi=a%ll;Ca-a+,iDi=!a;分值:2答案:B施析:取模运算符“”、二元运算符具有左结合性,参与运算的量均为整型。B选项中的a变量是double实型,不符合规定。14
9、.若变量x、y号正确定义并赋值,以下符合C语言语法的表达式是()。ISSSSING1.ESElAx+l=yB+x,y=xCx=x10=x+yDdouble(x)/10分值:2答案:B解析:A选项中不能将变量y赋给表达式,C选项的错误与A选项一样,D选项中强制类型转换表达式应写成(double)x/10。15.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。ISSSSING1.ESMAx=y=-5;Bx=n%2.5;Cx+n=i;Dx=5:4+1:分值:2答案:A品析:B选项中运算符“”的前后必须为整数,C选项中不能将变量赋给表达式x+n,D选项中不能将表达式4+1赋给常量5。16.表
10、达式a+=a=a=9的值是()。ISSSSING1.ESElA18B-9C0D9分值:2答案:C解析:首先计算a=9,然后计算a二9,即a=a9,结果为0,然后计算a+=0,即a-a0,所以最终结果为Oo17.设有以下语句:inta=l,b=2,e;c=a(b2);执行后,C的值为()。ISSS_SING1.E_SE1A7B9C8D6分值:2答案:B解析:h为2,二进制为OooOoo10,执行左移两位操作后为OOOOlO00,然后与aOOoooOOl做异或运算的结果为OoOOlOO1.即十进制的9。18.若有以下程序段:intr=8;printf(w%dr,rl);输出结果是()。ISSSSI
11、NG1.ESMA16B8C4D2分值:2答案:C解析:本题考查位运算,属于基础知识。题目中的整型变量8,二进制表达为00001000,右移一位为OOOOoI00,即4,C选项正确。19.有以下稗宇:includemain()inta=l,b=2,c=3,x;x=(ab.&c:printf(adnff,x);程序的运行结果是()。ISSS_SING1.E_SE1A3B1C2D0分值:2答案:A解析:本题考查位运算符以及相关运算。-为按位或,&为按位与,那么丁b为3,再与C按位与仍然为3,所以答案为A选项。20.若变量已正确定义,则语句S=32;s=32;Printf(%d,s);的输出结果是()
12、。ISSSSING1.ESElA一1B0C1D32分值:2答案:B解析:本题考查逻辑异或运算。异或运算只有在两个比较的位不同时其结果为1,否则结果为0,题目中两个值相同,所以结果为0。21.以下叙述中错误的是(JoISSSSING1.ESElAgets函数用于从终端读入字符串Bgetchar函数用于从磁盘文件读人字符Cfputs函数用于把字符串输出到文件Dfwrite函数用于以二进制形式输出数据到文件分值:2答案:B解析:本题考查字符处理函数和文件做操函数,属于基础知识。其中B选项的getehar函数用于从终端读入字符。22.要求通过While循环不断读入字符,当读入字母N时结束循环。若变量已
13、正确定义,以下正确的程序段是()oBwhile(ch=getchar()!=N)printf(acf9,ch);Cwhile(ch=getchar()=N)printf(%c,ch);DwhiIe(ch=getchar()=N)prinff(%c,ch);分值:2答案:B解析:在C语言中,等于号用表示,一个“二”表示赋值,所以A选项错误。C、D选项的含义都是如果输入的字符为“N”,则打印输出,所以正好和题意相反。23.以下不能输出字符A的语句是(注:字符A的ASCn码值为65,字符a的ASCIl码值为97)()。ISSSSING1.ESElAPrintf(%cn,a32);BPrinff(“d
14、n,A);CPrinff(%c、n”,65);DPrintf(%cn”,iB,一1);分值:2答案:B解析:B选项输出的格式为d,即为整型格式,所以输出字符A的ASCIl码值65,而不是字符A。由于大写字母比和其对应的小写字母的ASCH码值小32,所以A选项正确。字符A的ASCIl码值就是65,所以以c格式输出可以输出字符A,所以C选项正确。由于字符A的ASCil码值比字符B的小1.所以D选项正确。24.已知字符A的ASCn码值是65,字符变量CI的值是A,c2的值是D,则色行语句Pri?ff(%d,%d”,cl,c22);的输出结果是()。ISSS_SING1.E_SE1A65,68BA,68CA,BD65,66分值:2答案:D解析:打印时以d整型格式打印输出,所以字符标量CI的值打印出来就是65,从C22的值打印出来就是682,即66,所以选择D选项。25.有如下程序段:intx=12;doubley=3.141593;printf(a