第二章基本数据类型及运算一、选择题1.若以下选项中的变量已正确定义,则正确的赋值语句是。A)x1=26.8%3;B)1+2=x2;C)x3=0x12;D)x4=1+2=3;答案:C2.设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是。A)x=x*100+0.5/100.0B)x=(x*100+0.5)/100.0C)x=(int)(x*100+0.5)/100.0D)x=(x/100+0.5)*100.0答案:C3.下列C语言中运算对象必须是整型的运算符是。A)%=B)/C)=D)*=答案:A4.若有以下程序段:intc1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是。A)0B)0.5C)1D)2答案:A5.设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是。A)把x和y按从大到小排列B)把x和y按从小到大排列C)无确定结果D)交换x和y中的值答案:D6.下列变量定义中合法的是。A)short_a=1-.le-1;B)doubleb=1+5e2.5;C)longdo=0xfdaL;D)float2_and=1-e-3;答案:A7.以下4个选项中,不能被看作是一条语句的是。A){;}B)a=0,b=0,c=0;C)if(a0);D)if(b==0)m=1;n=2;答案:D8.设x=1,y=-1,下列表达式中解为8的是。A)x&yB)~x│xC)x^xD)x=3答案:D9.在C语言中不合法的整数是。A)20B)0x4001C)08D)0x12ed答案:C10.以下选项中不正确的实型常量是A)2.607E-1B)0.8103e0.2C)-77.77D)456e–2答案:B)11.若变量已正确定义并赋值,符合C语言语法的表达式是A)a=a+7B)a=7+b+c,a++C)int(12.3%4)D)a=a+7=c+b答案:B)12.以下十六进制数中不合法的是A)oxffB)0XabcC)0x11D)0x19答案:A)13.设inti=2,j=3,k=4,a=4,b=5,c=3;,则执行表达式(a=ij)&&(b=jk)&&(c=i,j,k)后,c值是。A)0B)1C)2D)3答案:D14.下列程序的运行结果是。#include“stdio.h”voidmain(){inti=23;do{++i;}while(i);printf(“%d”,i);}A)23B)24C)死循环D)无任何结果答案:C15.设inta=3,b=4,c=5;,下列表达式的值不为1的是。A)a+bc&&b==cB)a||b+c&&b-cC)!(ab)&&!c||1D)!(a+b)+c-1&&b+c/2答案:A16.下列不合法的常量是:。(1)’?’(2)’abc’(3)”Turboc”(4)’\0x32’(5)’\123’(6)’’’’(7)”△”(8)’△’(9)”\\\”(10)’’a’’’(11)’\\’(12)’\0123’(13)’\xaf’(14)’王’(15)”李为民”(16)”\xaif”答案:(2),(12),(14),(16)17.下列运算符中,结合方向为自左向右的是()。(A)?:(B),(C)+=(D)++答案:(B)18.若有floatx;则sizeof(x)和sizeof(float)两种描述()。(A)都正确(B)都不正确(C)前者正确(D)后者正确答案:(A)19.有整型变量x,单精度变量y=5.5,表达式x=(float)(y*3+((int)y)%4)执行后,x的值为()。(A)17(B)17.500000(C)17.5(D)16答案:(A)20.若给定条件表达式(M)?(a++):(a--),则其中表达式(M)。A.和(M==0)等价B.和(M==1)等价C.和(M!=0)等价D.和(M!=1)等价答案:C21.已知floatx=1,y;则y=++x*++x的结果是。A.y=9B.y=6C.y=1D.表达式是错误的答案:D22.以下程序的输出结果是。shorti=65535;printf(%d\n,i);A.65535B.0C.语法错误,无输出结果D.-1答案:D23.有变量说明语句inta,b,c;,顺序执行下面语句:a=b=c=1;++a||++b&&++c;那么,变量b的值应是()A.2B.1C.0D.3答案:B24.有变量说明inta=3;,则表达式a1&&--a1的运算结果和a的值应该是()A.0和2B.0和3C.1和2D.1和3答案:B25.以下程序的输出为。#includestdio.hvoidmain(){doublex=213.82631;printf(%-6.2e\n,x);}A.213.82B.21.38e+01C.2.14e+02D.-2.14e2答案:C26.下列关于单目运算符++、--的叙述中正确的是。A)它们的运算对象可以是任何变量和常量B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量D)它们的运算对象可以是char型变量、int型变量和float型变量答案:D27.有以下程序:#includestdio.hvoidmain(){chara,b,c,*d;a='\';b='\xbc';c='\0xab';d=\0127;printf(%c%c%c%c\n,a,b,c,*d);}编译时出现错误,以下叙述中正确的是。A)程序中只有“a='\';”语句不正确B)“b='\xbc';”语句不正确C)“d=\0127;”语句不正确D)“a='\';”和“c='\0xab';”语句都不正确答案:D28.有以下程序:#includestdio.hvoidmain(){inta=1,b=2,m=0,n=0,k;k=(n=ba)||(m=ab);printf(%d,%d\n,k,m);}程序运行后的输出结果是。A)0,0B)0,1C)1,0D)1,1答案:C29.已定义ch为字符型变量,下列赋值语句中错误的是。A)ch='\';B)ch=62+3;C)ch=NULL;D)ch='\xaa';答案:A30.以下4个选项中,不能看作一条语句的是。A){;}B)a=0,b=0,c=0;C)if(a0);D)if(b==0)m=1;n=2;答案:D31.假定有以下变量定义,则能使值为3的表达式是。intk=7,x=12;A)x%=(k%=5)B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)-(k%=5)答案:D32.以下程序的输出结果是。#includestdio.hvoidmain(){intx=3,y=2,z=1;printf(%s=%d\n,x/y&z,x/y&z);printf(%s=%d\n,x^y&~z,x^y&~z);}A)x/y&z=0B)x/y&z=1x^y&~z=0x^y&~z=0C)s=x/y&z=0D)x/y&z=1s=x^y&~z=1x^y&~z=1答案:D33.设有“intx=11;”则表达式(x++*1/3)的值是。A)3B)4C)11D)12答案:A34.若有语句scanf(”%d%c%f”,&a,&b,&c),假设输入序列为2223a123o.12,a、b、c的值为。A)无值B)2223,a,123o.12C)2223,a,无D)2223,a,123答案:D35.下列描述中,正确的一条是。A)C语言的整型变量可以分为int、short、long、unsignedint、unsignedshort、unsignedlong等几种类型,因此整型常量也可以分为这几种类型B)C语言的字符数据与整型数据可以互相赋值C)若对字符型变量的定义为:“charc;”可使用语句c=“a”对变量c赋值D)已知x为float型,执行语句(int)x后,x为int型答案:B36.设“intx=1,y=1;”,表达式(!x‖y--)的值是。A)0B)1C)2D)-1答案:B37.执行x=51+2&&2||2*44-!0后,x的值为。A)-1B)0C)1D)5答案:C38.语句“printf(%d,(a=2)&&(b=-2));”的输出结果是。A)无输出B)结果不确定C)-1D)1答案:D39.设a=2、b=3、c=4,则表达式a+bc&&b==c&&a||b+c&&b+c的值为。A)5B)8C)0D)1答案:D40.执行语句scanf(“%c%c%c”,&c1,&c2,&c3),输入abc时,变量c1、c2、c3的值分别为。A)'a','b','c'B)'a','b',''C)'a','','b'D)'a','','c'答案:A41.若有以下定义:inta=10,b=9,c=8;顺序执行下列语句后,变量b中的值是。c=(a-=(b-5));c=(a%11)+(b=3);A)3B)8C)9D)10答案:A42.有以下程序段:intm=0,n=0;charc='a';scanf(%d%c%d,&m,&c,&n);printf(%d,%c,%d\n,m,c,n);若从键盘上输入:10A10回车键,则输出结果是。A)10,A,10B)10,a,10C)10,a,0D)10,A,0答案:A43.已定义c为字符型变量,则下列语句中正确的是。A)c='97'B)c=“97“C)c=97D)c=“a”答案:C44.若有以下变量说明和数据的输入方式,则正确的输入语句为()。变量说明:floatx1,x2;输入方式:4.52回车3.5回车A)scanf(“%f,%f”,&x1,&x2);B)scnaf(“%f%f”,&x1,&x2);C)scanf(“%3.2f%2.1f”,&x1,&x2);D)scnaf(“%3.2f%2.1f”,&x1,&x2);答案:B45.若有程序段:for(m=1;m=100;m++){scanf(%d,&y);if(y0)continue;printf(%3d,m);}正确的描述是()。A)当y0时整个循环结束B)y=0时什么也不输出C)printf函数永远也不执行D)最多允许输出100个非负整数答案:D46.下面程序的运行结果是()。#includestdio.h#defineDATA20+7voidmain(){printf(DATA=%d,DATA/3);}A)DATA=22B)DATA=21C)DATA=9D)以上都不对答案:A47.sizeof(float)是()。A)一个双精度型表达式B)一个整型表达式C)一种函数调用D)一个不合法的表达式答案:B48.设有语句inta=5,b=6,c=7,d=8,x=2,y=2,n;n=(x=ab)&&(y=(++cd&&bc));则执行完上述语句后n的值为()。A)1B)2C)3D)0答案:D49.设c1,c2均是字符型变量,则以下不正确的函数调用为()。A)scanf(“c1=%cc2=%c”,&c1,&c2);B)c1=getchar();C)putchar(c2);D)putchar(c1,c2);答案:D50.有定义如下:charstr1[50],str2[20],ch;则下列语句中正确的是()。A)str1={“Crazy”};B)str1={“Crazy”};str2=str1;str2={“English”};strcpy(str1,str2);C)ch=“xy”;D)ch='x';答案:D51.有以下定义语句:doublea,b;intw;longc;若各变量已正确赋值,则下列选项中正确的表达式是()。A)a=a+b=b++B)w%((int)a+b)C)(c+w)%(int)aD)w=a=b答案:C52.有以下程序:#includestdio.hvoidmain(){inti=0,s=0;for(;;){if(i==