当前位置:文档之家› C语言数据类型和运算符及表达式复习题

C语言数据类型和运算符及表达式复习题

数据类型、运算符和表达式复习题.选择题1. 以下不合法的用户标识符是: ( )a) f2_G3 b) If c) 4d d) _82. 以下选项中合法的用户标识符是: ( )a) long b) _2Test c) 3Dmax d) A.dat3. 以下可用作用户标识符的是: ( )a) 12_a b) signed c) t-o d) _if4. 以下不是关键字的标识符是: ( )a) continue b) char c) If d) default5. C 语言提供的合法的关键字是: ( )a) swicth b) cher c) Case d) void6. 以下选项中不合法的int 整型常数是( )a) 32768 b) -56 c) 03 d) 0xAF7. 以下合法的长整型常量是( )a) 2L b) 49627 c) d) 213&8. 以下正确的实型常量是( )a) 1.2E b) . c) 1.2e0.6 d) 89. 以下选项中合法的实型常数是( )a) 5E2.0 b) E-3 c) .2E0 d) 1.3E10. 以下合法的八进制数是( )a) 0135 b) 068 c) 013.54 d) o711. 以下合法的十六进制数是( )a) 0x b) 0x4de c) 0x1h d) ox7712. 以下选项中非法的数值常量是( )a) 019 b) 0L c) 0xff d) 1e113. 若变量已正确定以下合法的赋值表达式是( )义,a) a=1/b=2 b) ++(a+b)c) a=a/(b=5) d) y=int(a)+b14. 若变量已正确定以下非法的表达式是( )义,a) a/=b+c b) a%(4.0)c) a=1/2*(x=y=20,x*3) d) a=b=c15. 设x为int 类型,其值为11,则表达式( x++*1/3 )的值是:a) 3 b) 4 c) 11 d) 12 16.设a,b 均为double 型,且a=5.5;b=2.5; 则表达式(int)a+b/b 的值是( )a) 6. b) 6 c) 5. d) 6.17.若a为int型,且其值为3,则执行完表达式:a+=a-=a*a 后,a 的值是( )a) -3 b) 9 c) -12 d) 618.设k 和x 均为int 型变量,且k=7 ;x=12;则能使值为 3 的表达式是( )b) x%=(k-k%5) d) (x%=k)-(k%=5)a) x%=(k%=5) c) x%=k-k%519. 若 a,b,c 均被定义成整型并已赋大于 1 的值,能正确表示代数式 1 的 C 语言表达式是( )abca) 1/(float)a*b*c b) 1/(a*b*c)c)1.0/a/b/c d) 1/a/b/(float)c 20. 以下变量 x,y,z 均为 double 型且已正确赋值,不能正确表示 代数式 x 的 C 语言表达式是( ) yzb) x*(1/(y*z)) d) x/y/zabc d的 C 语言表达式是( )b) a*b/c/d d) a*b/(c*d)22.若题中变量已正确定义并赋值,下面符合 C 语法的表达式是( )a) a%=7.6 b) a++,a=7+b+c c) int(12.3)%4 d) a=c+d=a+723. 若 t 已定义为 double 型,则表达式: t=1,t++,t+5 的值为( ) a) 7b) 7.0c) 2.0 d) 1.024. 已有定义: int a,b; float x,y;, 以下正确的赋值语句是: ( ) a) a=1,b=2, b) y=(x%2)/10; c) x*=y+8; d) a+b=x; 25. 有以下程序:main()a) x/y*z c) x/y*1/z21. 不能正确表示代数式a) a/(c*d)*b c) a*b/c*d{ int y=1111;printf( “y=%6d\n ”,y);printf( “y=%+06d\n ”,y);程序运行的结果是:d) y= 1111a) y= 1111 b) y= 1111 c) y=1111y= y=+01111 y=+01111 y=111126. 有以下程序:main(){ int y=456;printf( “*y=%7o*\n ”,y);printf( “*y=%-7o*\n ”,y);printf( “*y=%07o*\n ”,y);}程序运行的结果是: ()a) *y= 710* b) *y= 456**y=710 * *y=456 **y=* *y=*c) *y=710* d) *y=456**y=-710* *y=-456**y=0710* *y=0456*27. 有以下程序:main() { float y=3.667;printf( “*%f*\n ”,y); printf( “*%7.2f*\n ”,y); printf( “*%8.0f*\n ”,y);*3.28. 已有定义: double a,b;,若要求按输入方式(此处 * 代表一个 空格) **1.0**2.0< 回车> 分别给 a,b 输入 1,2,则能正确进行 输入的语句是( )a) scanf(“%f%f ”,&a,&b);b) scanf(“%5.1lf%5.1lf ”,&a,&b); c) scanf(“%lf%lf ”,&a,&b); d) scanf(“%5e%5e ”,&a,&b); 29. 以下合法的定义语句是( ) a) short _auto_=100-1; b) double b=1+5e2.5; c) long do=1l;}程序运行的结果是:a) *3.** 3.67*4*c) *3.667**3.)b) *3.**3.667 **4.* d)*3.**3.67**4.d) float 2_and=1e-3;30. 以下选项中不是 C 语句的是( )a) ++t b) ; c) k=i=j; d) {a/=b=1;b=a%2;}31. 有定义语句:int a=5,b;,不能给 b 赋2的赋值语句是( )a) b=a/2; b) b=b+2; c) b=2%a; d) b=5;b=2;32. 设x 和y 均为int 型变量,语句组x+=y;y=x-y;x-=y; 的功能是 ()a) 把x和y 从小到大排列b) 把x 和y 从大到小排列c) 无确定结果d) 交换x 和y 中的值33. 有定义语句:long int a; int k;,能给 a 赋40000 的正确语句是( )a) a=20000+20000; b) a=4000*10;c) k=400;a=k*100; d) a=4000;a=a*10;34. 若有定义:int a=8,b=5,c;,执行语句:c=a/b+0.4;后, c 的值是( )a) 1.4 b) 1 c) 2.0 d) 235. 有以下程序:main(){ int k=2,i=2,m;m=(k+=i*=k++);printf( “y=%d,%d\n ”,m,i);}程序运行的结果是: ( )a) 8,6 b) 8,3 c) 6,4 d) 7,4 36. 有以下程序:main(){ int y=3,x=3,z=1;printf( “%d %d\n ”,(++x,y++),z+2);}程序运行的结果是: ( )a) 3 4 b) 4 2 c) 4 3d) 3 337. 有以下程序:main() { int i; long l ; float f ; double d ;i=f=l=d=20/3; 38. 有以下程序:printf( “%d %ld}程序运行的结果是:(a) 6 6 6.0 6.0 c) 6 6 6.0 6.7 %3.1f %3.1f\n ”,i,l,f,d);)b) 6 6 6.7 6.7 d) 6 6 6.7 6.0c) -1 d) -32768main(){ unsigned a=32768; int b ; b=a ;printf( “b=%d\n ”,b);}程序运行的结果是: ( )a) b=32768 b) b=32767 c) b=-32768 d) b=-1 39.有以下语句 printf( “%d,%d,%u\n ”,016,16,-16);其输出结果 是( ) a) 16,16,65520b) 14,16,65520c) 16,16,-16d) 14,16,-16a) 23 b) 24 c) 25 d) 22 41.有以下程序:main() { int x=0xffff;printf( “%d\n ”,x--);}程序运行的结果是: ( )a) 3276740.若有定义语int b=0x17;printf( “%d ”,b++); ,其正确出结果是)b) FFFE二.填空题1.已有定义:float f=13.8;,则表达式:(int)f%3 的值是___1___.2. 已有定义:int x=3;, 则表达式:x=x+1.78 的值是___4___.3. 已有定义:double x=3.5; 则表达式:x=(int)x+1 的值是_4.__.4. 已有定义:int x=10,y=3,z;, 则表达式:z=(x%y,x/y) 的值是__3___.5. 设a,b,c 为整型数,且 a 的值为2,b 的值为3, c 的值为4,表达式:a*=16+(b++)-(++c) 的值为__28 _ .6. 已有定义:int x=0,y=0;,则计算表达式:(x+=2,y=x+3/2,y+5 )后,表达式的值是_8__,变量x的值是_2__,变量y的值是__3__.7. 已有定义:int x=110,y=017;,则计算表达式: ( x++,++y )后,按十进制表示,变量x的值是__111___,变量y的值是__16___。

8. 若已有定义语句:int k=3,j=4;, 运行表达式(k+=j,j/=4.0,++j,j+2) 后,表达式的值是__4___,变量k 的值是__7___,变量j 的值是___2___.9.已有定义:int x,y;,执行以下语句后的输出结果是__%d,%3__. x=11/3; y=5; printf( “%%d,%%%d\n ”,x,y);10. 已有定义:int y;, 执行以下语句后的输出结果是_26,032,0x1a .y=26; printf( “%d,%#o,%#x ”,y,y,y);11. 执行以下语句后的输出结果是__7/8=0%1___.printf( “7/8=%d ”,7/8); printf( “%%%d ”,7%2);12. 以下程序的运行结果是___4.,4 ____ .main() { float a;int b;b=a=24.5/5;printf( “%f,%d ”,a,b);}13. 以下程序的运行结果是___4.,4 ____ .main(){ float a;int b;a=b=24.5/5;printf( “%f,%d ”,a,b);}14. 以下程序的运行结果是a=374 ㄩㄩ**a=fc a=0374**a=0xfc#include <stdio.h>main() { int a=252;printf( “a=%-5o**a=%x\n ”,a,a);printf( “a=%#o**a=%#x\n ”,a,a);}15. 若有定义:int t1; double t2;, 执行下列语句后,t1 的值是t1=(t2=1.9,t2+5,t2++);16. 若有下列定义和语句,输出结果是.69 。

相关主题