int a=1,b=3,c=3;float d=4;能正确表示a⼀[(b+c)d]的是

2024-12-03 19:50:47
推荐回答(4个)
回答1:

选a/d/(b+c)
首先,从数学意义上考虑,a/(b+c)*1/d,a/(b+c)/d和a/d/(b+c)这3个表达式和a/[(b+c)d]是等价的
其次,考虑到C语言中/运算的性质,a/(b+c)*1/d和a/(b+c)/d这2个式子a/(b+c)这步运算a和b+c的商如果是小数的话,小数部分会被截断,这个例子中a/(b+c)=1/6=0,因此结果是不对的
但是a/d/(b+c),因为a/d是int/float,运算的时候会先把a转换成float,所以相当于1.0/4.0=0.25,由于a/d结果是一个float,所以计算0.25/(b+c)的时候,也会把b+c的结果6转换成float,也就是0.25/6.0,所以最后结果是和数学表达式a/[(b+c)d]相等的

回答2:

标准答案是 D
B和C在数学里是一样的。
但是C语言有个整除的问题。
a/(b+c) = 0
就是说,遇到分子分母都是整数,就会按整数除法得到 0
不信自己编程试试。

所以要算1/7 必须写 (double)1/7

回答3:

考查“优先级”的顺序和“/”是不是整除:
乘法和除法是同一等级,所以从左到右依次计算;
当“/“的两边都是整数时,是整除,而有一个为实数时则进行实数除法;

以下能正确表示数学式子a/[(b+c)d]的C语言表达式是(D)
(A)a/(b+c)*d=0
(B)a/(b+c)*1/d=0
(C)a/(b+c)/d=0
(D)a/d/(b+c)=0.04167

回答4:

第四个是正确的
其他的a/*之后结果为0
因为都是int型
明白吗?