第2章 运算符与表达式

上传人:桔**** 文档编号:508274670 上传时间:2023-12-30 格式:DOCX 页数:10 大小:34.70KB
返回 下载 相关 举报
第2章 运算符与表达式_第1页
第1页 / 共10页
第2章 运算符与表达式_第2页
第2页 / 共10页
第2章 运算符与表达式_第3页
第3页 / 共10页
第2章 运算符与表达式_第4页
第4页 / 共10页
第2章 运算符与表达式_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《第2章 运算符与表达式》由会员分享,可在线阅读,更多相关《第2章 运算符与表达式(10页珍藏版)》请在金锄头文库上搜索。

1、1. 表达式:(int)(double)9/2)- 9%2 的值是A) 0 B) 3C) 4 D) 5参考答案:B【解析】先将整型数据9强制转换成double型,然后除以2得到的结果与double型保持一致,即为4.5,然后将4.5 强制转换成整型数据4,然后计算9%2的值为1,最后计算4-1的值为3,所以选择B选项。2. sizeof( double )是B) 一个双精度型表达式D) 一种函数调用A) 一个整型表达式C) 一个不合法的表达式参考答案:A 【解析】sizeof是C语言中的一个操作符(operator),不是函数调用,简单的说其作用就是返回一个对象或者类 型所占的内存字节数。所以

2、选择A。)。3. 若有定义int x, y;并已正确给变量赋值,则以下选项中与表达式xy)? (x+) : (y+ )中的条件 表达式(xy)等价的是(B) (xy0)D) (xy=0)A) (xy0)C) (xy0)参考答案:A【解析】条件表达式:x=表达式1?表达式2:表达式3的含义是:先求解表达式1,若为非0(真),则求解 表达式2,将表达式2的值赋给x。若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给x。在本题 中与表达式1: (xy)等价的是(xy0)。)。4. 若变量已正确定义,在if (W) printf(%dn , k );中,以下不可替代可的是(A) ab+c b

3、) ch=getchar() c) a=b+cd) a+ +参考答案:A【解析】选项A)是非法的表达式,C语言中没有运算符。D) &5. 以下选项中不属于C语言程序运算符的是A) sizeofB) C) ( )参考答案:B 【解析】C语言中的不等于符号用”!=”表示,没有符”。所以选择B。6. 有以下程序:#include main()( int s, t, A=10; double B = 6;s=sizeof(A); t=sizeof(B);printf(%d, %dn, s, t);在V C6.0平台上编译运行,程序运行后的输出结果是()。A) 10,6B) 4,4C) 2,4D) 4,

4、8参考答案:D【解析】C语言中利用sizeof()函数判断数据类型长度,在VC6.0平台中,整型int占有4个字节,double型数 据占有8个字节。8. 若有定义语句:int x=10;,则表达式x=x+x的值为()。A) 0B) 20C) 10D) 10参考答案:C【解析】算术运算符+的优先级高于一=,且一=的结合方向为自右向左,所以表达式x=x+x可以表 示成 x=x(x+x)= 10 (10+10)= 10,选择 C)。9. 不能正确表示数学式的表达式是A) a/c*b b) a*b/c C) a/ b* c d) a*(b/c) 参考答案:C【解析】/号和*号的优先级处于平级,结合性

5、都是自左至右。所以选择C,C式子表示的是m。 b10. 有以下程序#include main()( int sum, pad, pAd;sum = pad = 5;pAd = +sum, pAd+, +pad; printf(%dn, pad );程序的输出结果是A) 5B) 6C) 7D) 8参考答案:B【解析】C语言区分大小写,pad与pAd是两个不同的变量。首先将5赋值给两个变量,由于赋值运算符的优先级 高于逗号运算符,所以计算pAd=+sum,此时pAd为6,sum也为6,然后计算pAd+,pAd的值变为7,+pad,pad的 值变为6,所以选择B。11. 表达式a+=a -= a=9

6、的值是A) 18B) -9C) 0D) 9参考答案:C【解析】首先计算a=9,然后计算a-=9,即2=2-9,结果为0,然后计算a+=0,即a=a+0,所以最终结果为0。12. 若变量已正确定义,以下选项中非法的表达式是A) a!=4llb b) a=1/2*(x=y=20,x*3)C) a % 4d) A + 32参考答案:B【解析】A选项中a即表示a为字符常量,再给a赋值1/2*(x=y=20,x*3),是不正确的。因此B选项正确。13. 若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是A) x+1=yb) +x,y=x- C) x=x+10=x+y d) double(x)/1

7、0参考答案:B【解析】A选项中不能将变量y赋给表达式,C选项中错误与A选项一样,D选项中强制类型转换表达式应写成 (double)x/10。14. 设有定义:int x=2;,以下表达式中,值不为6的是()。A) 2*x,x+=2b) x+ +,2*x c) x* = (1+x)d) x*=x+1参考答案:A15A【解析遥项中逗号表达式拒计算第一右达 式工.然后计算表达式工+ 的值,郎工=工技即4整个逗 号表运式为第二个表法式的值*所以送择士)。B)选项中首 先计算逗号表达式中第一表达式x十十,此时工为3.在扶行第 二个表注式2:心二n 3二6.所以号表法式为第二个表法式 的1值伉3选项的蜜值

8、表达式可以表示为=r4 ( I十T =之 *(1皿)=R 口)选顼中的古达式可以表示为工=以(工+ I ) =2 * 3 =615. 若有以下程序#include main()( int a=0,b=0,c=0;c= (a -= +a), (a+=b, b+=4);printf(%d,%d,%dn”,a,b,c);则程序的输出结果是A) 0,4,0B) 0,4,4C) 1,4,1D) 1,4,4参考答案:A【解析】逗号运算符的结合性从左到右,因此逗号表达式将从左到右进行计算。且逗号运算符的优先级最低, 所以先计算c=(a-=+a)这部分。其中,赋值运算符从右往左计算先执行+a,a自增1后再赋值

9、,所以a的值为1, 执行a=a-1,即a=1-1,a的值为0,并将0赋给变量c。第二部分(a+=b,b+=4),先执行a=a+b,a=0+0,即a的值为0,然后 执行b+=4,b=0+4,即b的值为4。所以打印结果为0,4,0,选择A选项。16. 若有以下程序#include main()( int a=0,b=0,c=0,d;c= (a+=b, b+=a);/*第4行*/d=c;/*第5行*/;/*第6行*/;printf(%d,%d,%dn,a,b,c);/*第 7行*/编译时出现错误,你认为出错的是A) 第4行B) 第5行 C) 第6行D) 第7行参考答案:A【解析】第4行逗号表达式中间

10、的第二个表达式为空,是不合法的,可以去掉写成a+=b,b+=a,也可以在里面补 一个表达式,如a+=b,a,b+=a。所以选择A选项。17. 若有以下程序#include main()( int a=0,b=0,c=0c= (a+=+b, b+=4);printf(%d,%d,%dn”,a,b,c);则程序的输出结果是A) 1,5,1B) 1,5,5C) -1,4,4D) -1,4,-1参考答案:B【解析】逗号运算符的结合性从左到右,因此逗号表达式将从左到右进行计算。且逗号运算符的优先级最低。 先计算a+=+b,结果a为1,b为1,然后计算b+=4,b的值为5。逗号表达式的值为其中最后一个表达

11、式的值,所以 将5赋给变量c,即a为1,b为5,c为5。所以选择B。18. 有以下程序#include int fun(int a)( int b=0;static int c=3;a =( c+,b+);return ( a );main()( int a = 2, i, k;for( i=0; i2; i+ )/i=0 1k = fun(a+);printf( %dn,k );程序的输出结果是A) 4B) 0C) 1D) 2参考答案:B【解析】题目中厕函数被执行了两次,两次执行后,都是返回了函数内部的3值,所以答案为0,即B选项 正确。19. 有以下程序:(逗号表达式语句#include

12、main()( int x, y, z;x=y=1;z x+,y+,+y ;printf(%d, %d, %dn, x, y, z);程序运行后的输出结果是()。A) 2,3,3B) 2,3,2C) 2,3,1D) 2,2,1参考答案:C【解析】z=x+,y+,+y;因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式表示成 (z = x+),(y+),(+y)。然后从左向右先计算表达式z=x+,因为x+先使用后自增,所以z的值为1,x 的值为2。再计算逗号表达式第二个表达式y+,此时y的值为2,最后计算第三个表达式+y,y的值为3。20. 设有定义:(逗号表达式及语句)int a=1

13、,b=2,c=3;以下语句中执行效果与其它三个不同的是A) if(ab) c=a,a=b,b=c;b) if(ab) c=a,a=b,b=c;C) if(ab) c=a;a=b;b=c;d) if(ab) c=a;a=b;b=c;参考答案:C【解析】由于a不小于b ,所以所有选项中的条件都为假,A选项中实际执行Ta=b;b=c;两个操作。而B,C,D选项 由于条件不成立,所以什么也没有做,所以选择C选项。21. 若有定义语句(赋值类型自动转换)int x=12, y=8, z;在其后执行语句z= 0.9+x/y;则z的值为A) 1B) 1.9C) 2D) 2.4参考答案:A【解析】先计算x/y

14、,结果为1,然后计算0.9+1,结果为1.9,但由于变量z为整型,所以取值1,所以z的值为1。22. 表达式3.6-5/2+1.2+5%2的值是(/ %运算符的使用)A) 4.3B) 4.8C) 3.3D) 3.8参考答案:D【解析】计算5/2,结果取整数值2。计算3.6-2,结果与高精度数据保持一致,即为1.6。计算1.6+1.2,结果 为2.8。计算5%2,结果为1。计算2.8+1结果为3.8。所以选择D选项。23. 有以下定义:int a;long b;double x, y;D) y=x+y=x则以下选项中正确的表达式是(运算符的综合使用)A) a=xy b) a%(int)(x-y) C) (a*y)%b参考答案:B 【解析】C语言中没有”运算符,所以A选项错误。”运算符的两个操作值必须为整型数据,所以B选项正 确。a*y的结果为double型,所以C选项错误。不能将值赋给像x+y这样的表达式,所以D选项错误。D) x%2=124. 以下选项中,当x为大于1的奇数时,值为0的表达式是A) x%2=0 b) x/2c) x%2!=0参考答案:A 【解析】算术运算符的优先级高于关系运算

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号