C语言当a=3,b=5,c=7,x=2.5,y=5.5时请问以下各题该怎么算

C语言当a=3,b=5,c=7,x=2.5,y=5.5时,以下该怎么算?帮忙写出详细的算法,不用写出程序,只需帮忙分析各个步骤,因为不知道最后结果怎么来的1、(float... C语言当a=3,b=5,c=7,x=2.5,y=5.5时,以下该怎么算?帮忙写出详细的算法,不用写出程序,只需帮忙分析各个步骤,因为不知道最后结果怎么来的
1、(float)(a+c)/2+(int)x%(int)y
2、a+=a-=a*=a
3、x+a%3*(int)(x+y)%2/4+sizeof(int)
4、a%=(b%=3)
展开
 我来答
a125417813
2014-03-31
知道答主
回答量:14
采纳率:0%
帮助的人:4.8万
展开全部
(1)、PS:强制类型转换优先级比较高!
所以(float)(a+c)和(int)x和(int)y会先计算,先转换成float型数据,之后再除以2就可以得到小数点的了,(float)(a+c)/2的结果等于5.0,此时是float型,(int)x%(int)y即变为2%5=2,所以最终结果是float型的7

(2)、a+=a-=a*=a 要从右往左计算,a*=a即为a=a*a(将a*a的结果赋值给a)结果为3*3=9,,a-=a即为a=a-a结果为9-9=0,,a+=a即为a=a+a结果为0+0=0;所以最终结果是0
(3)、还是那句话,优先级知道了你就基本做出来了,先算(int)(x+y)、sizeof(int)(他们是同一级的,同时遇到时从右至左算)再算除乘求余(他们是同一级的,同时遇到时从左至右算)再来加减;

(int)(x+y)得到2.5+5.5=8由于没有小数,所以转换之后还是8,sizeof(int)得到2;a%3*8%2/4=>0*8%2/4=>0%2/4=>0/4=>0;x+0+2=>2.5+0+2=>4.5(double)型的(他会自动转换成相同的类型然后进行加减运算,所以小数不会边没掉)所以最终结果是4.5
(4)、有括号的先算括号的!所以该题先算b%=3即b=b%3得到2,,,然后a%=2即a=a%2得到1,所以最终结果是1
花了些时间写这个,希望对你有帮助!如果这个还是做不出来,建议在做的时候对照一下C运算符的优先级与结合性的表格看看,多做几题就会了,很简单的!
sunnylxwttt
2014-03-31 · TA获得超过135个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:94.4万
展开全部
(float)(a+c)/2+(int)x%(int)y=(float)(7+3)/2+(int)(2.5)%(int)(5.5)
=10/2+2%5=5+2=7

a+=a-=a*=a由后往前算
a*=a:a=a*a,a=9
a-=(a*=a):a=a-9=9-9=0
a+=a-=a*=a:a=a+(a-=(a*=a))=0+0=0

x+a%3*(int)(x+y)%2/4+sizeof(int)
2.5+3%3*(int)(2.5+5.5)%2/4+sizeof(int)
2.5+3%3*8%2/4+4=2.5+0+4.5=6.5

a%=(b%=3)由后往前算
b%=3:b=b%3=5%3=2
a%=(b%=3):a=a%(b%=3)=3%2=1
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
i佳佳0
2014-03-31
知道答主
回答量:19
采纳率:0%
帮助的人:1.9万
展开全部
第一个单精度和整的算法,,第二个是a+a=-a*a的判定,是为1否为0,三个是取余问题,第四个是同三
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式