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) 展开
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) 展开
3个回答
展开全部
(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运算符的优先级与结合性的表格看看,多做几题就会了,很简单的!
所以(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运算符的优先级与结合性的表格看看,多做几题就会了,很简单的!
展开全部
(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
=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
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个单精度和整的算法,,第二个是a+a=-a*a的判定,是为1否为0,三个是取余问题,第四个是同三
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询