《C语言数据类型和运算符及表达式复习题(17页).doc》由会员分享,可在线阅读,更多相关《C语言数据类型和运算符及表达式复习题(17页).doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-C语言数据类型和运算符及表达式复习题-第 17 页数据类型、运算符和表达式复习题一选择题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) Cas
2、e d) void6. 以下选项中不合法的int整型常数是( ) a) 32768 b) -56 c) 03 d) 0xAF7. 以下合法的长整型常量是( ) a) 2L b) 49627 c) 34566666 d) 213&8. 以下正确的实型常量是( ) a) 1.2E b) .579899 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)
3、 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) 1216设a,b均为double型,且a=5.5;b=2.5;则
4、表达式 (int)a+b/b的值是( ) a) 6.500000 b) 6 c) 5.500000 d) 6.00000017若a为int型,且其值为3,则执行完表达式: a+=a-=a*a后,a的值是( ) a) -3 b) 9 c) -12 d) 6 18设k和x均为int型变量,且 k=7; x=12;则能使值为3的表达式是( )a) x%=(k%=5) b) x%=(k-k%5) c) x%=k-k%5 d) (x%=k)-(k%=5)19. 若a,b,c均被定义成整型并已赋大于1的值,能正确表示代数式的C语言表达式是( )a) 1/(float)a*b*c b) 1/(a*b*c)
5、c) 1.0/a/b/c d) 1/a/b/(float)c20. 以下变量x,y,z均为double型且已正确赋值,不能正确表示代数式的C语言表达式是( )a) x/y*z b) x*(1/(y*z) c) x/y*1/z d) x/y/z21. 不能正确表示代数式的C语言表达式是( ) a) a/(c*d)*b b) a*b/c/d c) 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
6、=1,t+,t+5的值为( ) a) 7 b) 7.0 c) 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() int y=1111; printf(“y=%6dn”,y); printf(“y=%+06dn”,y);程序运行的结果是:( ) a) y= 1111 b) y= 1111 c) y=1111 d) y= 1111 y=001111 y=+01111 y=+01111 y=1111 26. 有以下程
7、序: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=0000710* *y=0000456* 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); prin
8、tf(“*%8.0f*n”,y);程序运行的结果是:( ) a) *3.667000* b) *3.667000* * 3.67* *3.667 * * 4* *4.000000* c) *3.667* d) *3.667000* *3.667000* *3.67* *3.667000* *4.000000*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(“%
9、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;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
10、;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+); print
11、f(“y=%d,%dn”,m,i);程序运行的结果是:( ) a) 8,6 b) 8,3 c) 6,4 d) 7,436. 有以下程序:main() int y=3,x=3,z=1; printf(“%d %dn”,(+x,y+),z+2);程序运行的结果是:( ) a) 3 4 b) 4 2 c) 4 3 d) 3 337. 有以下程序:main() int i; long l; float f; double d; i=f=l=d=20/3; printf(“%d %ld %3.1f %3.1fn”,i,l,f,d);程序运行的结果是:( ) a) 6 6 6.0 6.0 b) 6 6 6
12、.7 6.7 c) 6 6 6.0 6.7 d) 6 6 6.7 6.038. 有以下程序:main() unsigned a=32768; int b; b=a; printf(“b=%dn”,b);程序运行的结果是:( ) a) b=32768 b) b=32767 c) b=-32768 d) b=-139有以下语句printf(“%d,%d,%un”,016,16,-16);其输出结果是( ) a) 16,16,65520 b) 14,16,65520 c) 16,16,-16 d) 14,16,-1640若有定义语句:int b=0x17;printf(“%d”,b+);,其正确的输
13、出结果是( ) a) 23 b) 24 c) 25 d) 22 41有以下程序:main() int x=0xffff; printf(“%dn”,x-);程序运行的结果是:( )a) 32767 b) FFFE c) -1 d) -32768二填空题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.000000_.4. 已有定义:int x=10,y=3,z;, 则表达式:z=(x%y,x/y) 的值是
14、_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已有定义
15、:int x,y;,执行以下语句后的输出结果是_%d,%3_. x=11/3; y=5; printf(“%d,%dn”,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.900000,4_. main() float a;int b; b=a=24.5/5; printf(“%f,%d”,a,b);13. 以下程序
16、的运行结果是_4.000000,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 main() int a=252; printf(“a=%-5o*a=%xn”,a,a); printf(“a=%#o*a=%#xn”,a,a);15. 若有定义:int t1; double t2;,执行下列语句后,t1的值是_1_。 t1=(t2=1.9,t2+5,t2+);16. 若有下列定义和语句,输出结果是 000034213.69 。flo
17、at x=34213.6894; printf(“%012.2f”,x);17. int类型变量占两个字节,以下语句的输出结果是-1,177777,ffff,65535 。int a=-1; printf(“%d,%o,%x,%u”,a,a,a,a);三操作题1写出以下程序运行的结果: main() char c1=a,c2=b,c3=c,c4=101,c5=116; printf(a%c b%ctc%ctabcn,c1,c2,c3);printf(tb%c %c,c4,c5);2. 分析以下程序能否正常运行。 main() int c1,c2; c1=97; c2=98; printf(%c
18、 %cn,c1,c2);printf(%d %dn,c1,c2);3. 写出程序运行的结果。 main() int i,j,m,n; i=8; j=10; m=+i; n=j+; printf(%d,%d,%d,%dn,i,j,m,n);4. 求下面算术表达式的值(1) 设x=2.5, a=7, y=4.7x+a%3*(int)(x+y)%2/4(2) 设a=2, b=3, x=3.5, y=2.5,(float)(a+b)/2+(int)x%(int)y5. 要将“China”翻译成密码。密码规律是:用原来字母的后面第4个字母代替原来的字母。请编写一程序实现。并输出结果。(Glmre)6.
19、写出以下四个程序运行的结果: main()int i=6;printf(%d,%d,%dn,i,(i+)+(i+)+(i+),i); main()int i=6;printf(%d,%d,%dn,i,(+i)+(+i)+(+i),i);main()int i=6,j;j=(i+)+(i+)+(i+);printf(%d,%dn,i,j);main()int i=6,j;j=(+i)+(+i)+(+i);printf(%d,%dn,i,j);7. 写出以下程序运行的结果: main()typedef int counter;counter x;float y;x=sizeof y;y=sizeo
20、f (counter);printf(%d,%fn,x,y);8. 写出以下程序运行的结果: main()float f; int i=4; f=10/i;printf(%fn,f); main()float f; int i=4; f=10.0/i; printf(%fn,f);9写出以下程序运行的结果:main() int a,b,c; long int u,n; float x,y,z; char c1,c2; a=3;b=4;c=5; x=1.2;y=2.4;z=-3.6; u=51274;n=128765; c1=a;c2=b; printf(n); printf(a=%2d b=%
21、2d c=%2dn,a,b,c); printf(x=%8.6f,y=%8.6f,z=%9.6fn,x,y,z); printf(x+y=%5.2f y+z=%5.2f z+x=%5.2fn,x+y,y+z,z+x); printf(u=%6ld n=%9ldn,u,n); printf(c1=%c or %d(ASCII)n,c1,c1); printf(c2=%c or %d(ASCII)n,c2,c2);10写出以下程序运行的结果:main() int a=5,b=7; float x=67.8564,y=-789.124; char c=A; long n=1234567; unsig
22、ned u=65535; printf(%d%dn,a,b); printf(%3d%3dn,a,b); printf(%f,%fn,x,y); printf(%-10f,%-10fn,x,y); printf(%8.2f,%8.2f,%.4f,%.4f,%3f,%3fn,x,y,x,y,x,y); printf(%e,%10.2en,x,y); printf(%c,%d,%o,%xn,c,c,c,c); printf(%ld,%lo,%xn,n,n,n); printf(%u,%o,%x,%dn,u,u,u,u); printf(%s,%5.3sn,COMPUTER,COMPUTER);11
23、用下面的scanf函数输入数据,问在键盘上应如何输入才能使a=3,b=7,x=8.5,y=71.82,c1=A,c2=a main() int a,b; float x,y; char c1,c2; scanf(a=%d b=%d,&a,&b); scanf(%f %e,&x,&y); scanf( %c %c,&c1,&c2); printf(a=%d,b=%dn,a,b); printf(x=%f,y=%fn,x,y); printf(c1=%c,c2=%cn,c1,c2);12用下面的scanf函数输入数据,问在键盘上应如何输入才能使a=10,b=20,c1=A,c2=a ,x=1.5,y=-3.75,z=67.8 main() int a,b; char c1,c2; float x,y,z; scanf(%5d%5d%c%c%f%f%*f,%f,&a,&b,&c1,&c2,&x,&y,&z); printf(a=%d,b=%dn,a,b); printf(c1=%c,c2=%cn,c1,c2); printf(x=%6.2f,y=%6.2f,z=%6.2fn,x,y,z);
限制150内