为什么c语言乘除法优先级低,C语言训练题.docx

C语言训练题

C语言训练题1、表达式:(int)((double)9/2)- 9%2 的值是A) 0B) 3C) 4D) 5 参考答案:B【解析】先将整型数据9强制转换成double型,然后除以2得到的结果与double型保持一致,即为4.5,然后将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4-1的值为3,所以选择B选项?2、若变量已正确定义,在if (W) printf("%d\n" ,k ); 中,以下不可替代W的是( )。A) a<>b+cB) ch=getchar()C) a==b+cD) a++ 参考答案:A【解析】选项A)是非法的表达式,C语言中没有<> 运算符。3、设有定义:int x=7,y=12;,则以下表达式值为3的是A) (y%=x)-(x%=5) B) y%=(x%=5) C) y%=x-x%5 D) y%=(x-x%5) 参考答案:A【解析】a%=b表示a=a%(b),故A选项可改写成y=y%x,x=x%5,再计算y-x计算的结果为3,满足题意,因此答案为A选项。4、若有定义语句:int x=10; ,则表达式x-=x+x的值为( )。A) 0B) -20C) -10 D) 10 参考答案:C【解析】算术运算符+的优先级高于-= ,且-=的结合方向为自右向左,所以表达式x-=x+x可以表示成x=x-(x+x)=10-(10+10)=-10,选择C)。5、有以下程序 #include main() { int sum, pad, pAd; sum = pad = 5; pAd = ++sum, pAd++, ++pad; printf("%d\n", pad ); }程序的输出结果是A) 5B) 6C) 7D) 8 参考答案:B【解析】C语言区分大小写,pad与pAd是两个不同的变量?首先将5赋值给两个变量,由于赋值运算符的优先级高于逗号运算符,所以计算pAd=++sum,此时pAd为6,sum也为6,然后计算pAd++,pAd的值变为7,++pad,pad的值变为6,所以选择B?6、有以下程序#include main(){ int a, b, c=241; a = c/100 % 9; b = ( -1 )&&( -1 ); printf("%d, %d\n", a, b );}程序运行后的输出结果是A) 2,1 B) 6,1 C) 6,0 D) 2,0 参考答案:A【解析】程序执行过程为:c=241,c/100=2,2%9=2,得a=2;"="优先级低于"&&",非0值为真,0值为假,即(-1)为真,逻辑与表达式(-1)&&(-1)为真,得b=1。A选项正确。7、已知a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c"。"&&"逻辑与表达式:exp1&&exp2,规则为:对exp1求值,若为0,则表达式为0,且不计算exp2;若exp1非0,则求exp2值,作为表达式值。本题计算过程为:先判断a>b为假,m=0,整个逻辑表达式为假,不计算右表达式,n=2。C选项正确。8、若有C语言表达式 2+3*4+7/3,以下选项中叙述正确的执行顺序是A) 先执行3*4得12,再执行7/3得2.5,最后执行2+12+2.5得16.5B) 先执行3*4得12,再执行2+12得14,再执行7/3得2,最后执行14+2得16C) 先执行7/3得2,再执行3*4得12,再执行12+2得14,最后执行2+14得16D) 先执行2+3得5,再执行5*4得20,再执行20+7得27,最后执行27/3得9 参考答案:B【解析】首先,在C语言中,乘除法优先级要高于加减法,其次,除法运算符"/"两边参加运算对象都是整数,运算结果要取整,故排除A,D选项;C语言中,因为运算符"*"和"/"都满足从左到右的运算规则,故应先计算3*4=12因此C排除,答案为B选项。9、若想给已定义为int型的变量a、b、c、d赋整数1,以下选项中错误的语句是A) d=c, c=b, b=a, a=1;B) d=c=b=a=1;C) d=(b=c=(a=1));D) d=1, c=d, b=c, a=b; 参考答案:A【解析】赋值是将一个常量的值赋给一个变量,在A选项中,c初始值未定义,相当于一个未知数给变量d赋值,不满足赋值为1的条件,答案选A;B选项中, d=c=b=a=1因为赋值运算符号具有右结合性质,故可理解为d=(b=c=(a=1))。10、若变量已正确定义,以下选项中非法的表达式是A)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值