C语言第3章《运算符与表达式》测试题一、选择题(每题2分,共50分)1、表达式“2,4,6,8”的值为()A.2B.4C.6D.82、以下程序的输出结果是()main(){int a=12,b=0x12;printf(“%d%d\n”,--a,++b);}A.12 12B.12 18C.11 10D.11 193、设x和y都是int型变量,则执行表达式“x=(y=4,z=16),k=32”后,x的值为()A.4B.16C.32 D、524、设x为int型变量,执行语句“x=’A’;x*=2+2;”后,的值为()A.65B.260C.132D.语句错误5、若有语句“int a=5;a++*2;”则表达式“a++*2”的值为()A.7B.12C.5D.106、设x和y为int型变量,表达式“x+=y;y=x-y;x-=y;”的功能是()A.把x和y按从小到大排列B.把x和y按从大到小排列C.无确定结果D.交换x和y的值7、下面程序的输出结果是()main(){int x=’\23’;printf(“%d\n”--x);}A.19B.18C.23D.248、若变量f已定义为float型, i为int 型,则下面()表达式(或语句)能够实现将f的数值保留小数点后两位,第3位进行四舍五入的运算。
A.f=(f*100+0.5)/100.0B.i=f*100+0.5,f=i/100.0;C.f=(int)(f*100+0.5)/100D.f=(f/100+0.5)*100.09、下面表达式正确的是()A. a+b=5B.56=a11C.5.6+6.2%3.1D.a=5,b=6,c=710、若t为double型变量,执行逗号表达式“t=(x=0,x+5),t++;”的输出结果是()A.1B.6.0C.2.0D.1.011、下列赋值语句不正确的是()A.++tB.n1=(n2=(n3=0))C.k=m=j;D.a=b+c=112、如果下面的变量都是int型,则下面程序段的输出结果是()sum=pad=5;pad=sum++,pad++,++pad;printf(“%d\n”,pad);A.7B.6C.5D.413、以下程序的输出结果是()#include<stdio.h>main(){int i=23,j=12;i++;--j;printf(“%d,%d\n”,i,j);}A.23,12B.24,11C.23,11D.24,1214.下列程序执行后的输出结果(小数点后只写一位)是_______。
main(){double d; float f; long 1; int 1;i=f=l=d=20/3;printf(“%d %d%f%f\n”,I,1,f,d);}A.6 6 6.0 6.0B.6 6 6.7 6.7C.6 6 6.0 6.7D.6 6 6.7 6.015.下面表达式正确的为_________ 。
A.a+b=5B.56=a11C.i=i++D.5.6+6.2%3.116.下列表达式正确的是_______。
A.(k++)++B.k---jC.k--/=5D.(k+3)=517.若a,b,c,d都是int型变量且初值均为10,赋值语句不正确的是_______。
A.a=b=c=d;B.a=b++;C.(a+b)++;D.d=(a=b=125)-c++;18.设x和y 均为int型变量,则执行语句”x=15;y=5;printf(“%d\n”,x%=(y%=2));”后的输出结果为_____。
A.0B.1C.6D.1219.若有定义”int a;”则表达式语句”a+=a-=a*a;”等价于下列哪组表达式语句_______。
A.a+a;a*a;B.a=a+a;a=a-a*a;C.a=a+a-a*a;D.a=a-a*a;a=a+a20.设程序中x,y,z 均已赋值为大于1的整数,能正确表示1/xyz的表达式是______。
A.1/x*Y*ZB.1/(x*y*z)C.1.0/x/y/zD.1/x/y(double z)21.设有定义”char chl=‟A‟;”表达式“chl+5”的值是______。
A. …A‟B.‟F‟C.‟e‟D. 不确定22.设有定义”int a=6,b=13;”,则以下表达式中结果为3的是_______.A.(b%=a)-(a%=5)B.b%=(a%=5)C.b%=(a-a%5)D.b%=b-a%523.关于单目运算符++和—叙述正确的是___________.A.它们的运算对象可以是任何变量和常量B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量D.它们的运算对象可以是char型变量、int型变量和float型变量24、若有以下程序段:int m=oxabc,n=oxabc;m-=n;printf(“%x\n”,m);执行结果是________。
A.0X0B.0x0C.0D.0XABC25. 以下运算符中优先级别最低的是___________.A.++ B. , C.?: D./二.填空题(每空1分,共21分)(1)若有定义”int i,j,k;”则表达式”i=10,j=20,k=30,k*=i+j”的值为________.(2)当a=6,x=6.8,b=4时,表达式”x+a%7*(int)x+8/3+b”的值为________.(3)表达式”12345==12345/3*3的值为_________.(4)表达式3*4%5的值为_________,(float)((12+7)/4)的值为__________.(5)若有定义”int i=3,j=4;”则执行完”i*=j+8;”后i的值为_______.(6)数学表达式|x|+|b|的C语句形式为_________________,|a+b|的C语句形式为___________________.(7) 若有定义”int i=10,j=2;”则表达式”j*=i++*2”的值为________.(10)把变量a1,a2定义为单精度实型变量,并赋初值1的语句是______________________.(11)空语句的形式是____________.(12)若要交换变量a和b的值(用变量c做中间变量),所用的语句为__________;___________和____________;(14)若有定义”int x=12,y=13;”则表达式x++的值为______,表达式-(++y) 的值为______。
(15)执行”int x=4,y;y=x--+3;”语句后,变量x的值是_____,y的值是______。
(16)C语言规定了运算符的优先级和结合性,其结合性分为_____ 和______(17)若有语句”int i=-19,j=i%4;printf(“%d\n”,j)则输出的结果是_____三、写出下面程序的运行结果(每题3分,共18分)1、main(){int i=8,j=7;printf(“%d\n”,++i);printf(“%d\n”,- -i);printf(“%d\n”,(i++)+(j++));printf(“%d\n”,(i--)+(j--));}2、main(){int a=2,b=4,c=6,x,y;y=((x=a+b),(b+c));printf(“y=%d,x=%d”,y,x);}结果是。
3.#include<math.h>main( ){double a=-3.0,b=2;printf(“%3.0f%3.0f\n,pow(b,fabs(a)),pow(fabs(a),b));}结果是。
4.main( ){int x=6,y;printf(“x=%d\n”,x,);y=++x;printf(“x=%d,y=%d\n”,x,y);y=x--;printf(“x=%d,y=%d\n”,x,y);结果为_____________________.5、main(){int m=6;float f=0;printf(“%d %d\n”,sizeof(m),sizeof(f));printf(“%d %d\n”,sizeof(short),sizeof(double));}结果为______________________________。
6、main ( ){int a,b,x;printf(“%d\n”,(a=3*5,a*4));printf(“%d\n”,((a=3*5,a+4),a+5));x=b=a=3,6*a;printf(“x=%d\tb=%d\n”,a,b);x=b=a=3,6*a;printf(“x=%d\tb=%d\n”,a,b);}结果为___________________________。
7、main( ){int n=7;n+=n=n*=n/3;printf(“a=%d,b=%d\n”,a,b);}结果为___________________________。
四.把下列的数学表达式写成相应的C语言算术表达式.(每题1分,共6分)1.2∏r2.2absin3003.3x4+4y n-14.25[x2+(x+y)*a]3五、编写程序(共4分)已知a=5,b=3,c=8,利用条件表达式求a,b,c三个数中的最大数。