不能正确表示数学式子 的C语言表达式是

来源:百度知道 编辑:UC知道 时间:2024/05/24 17:25:34
以下变量x.、y、z均为double类型且已正确赋值,不能正确表示数学式子 的C语言表达式是
A) x/y*z B) x*(1/(y*z)) C) x/y*1/z D) x/y/z
请高手讲解一下这个题目,我觉得个个选项都一样啊。题目答案是A
A:
x/y*z的运算顺序是:
(x/y)
(x*z)/y (怎么刚是x/y却又来个(x*z)/y?这里不懂!)
最后可以得结果: (x*z)/y
还有,我的教科书上用的系统是从右往左的……晕死~怎么这个题目是从左往右的,也不说一声

**************************************************
答案--选:A
**************************************************

首先,要知道*和/的 "优先级相同" ,"从左到右结合".
而()的优先级大于*和/,有括号,先括号!!!!!

注意:千万要记住,从左到右结合(除了括号优先).

详细分析:

A:
x/y*z的运算顺序是:
(x/y)
(x/y)*z
最后可以得结果: (x*z)/y

B:
x*(1/(y*z))的运算顺序是:
(y*z)
1/(y*z)
x*(1/(y*z))
最后化简相当于x/(y*z)

C:
x/y*1/z的运算顺序是:
x/y
(x/y)/1 (等于x/y)
(x/y)/z
最后化简相当于: x/(y*z)

D:
x/y/z 的运算顺序是:
x/y
(x/y)/z
最后化简相当于: x/(y*z)

可以看出B,C,D相同,A不同,A表达错了!!! 选:A

最后,给你个小程序,让你可以运行看看结果!!!!!!

main()
{
float x=4,y=3,z=2;
printf("Re: %f , %f , %f , %f .",x/y*z,x*(1/(y*z)),x/y*1/z,x/y/z);
}

!!!!!!!!!!!!!!!!!!!The End !!!!!!!!!!!!!!!!!!!!!!

A是(x*z)/y,其他表示x/(y*z)
(x*z)/y也就是(x/y)*z,

从右到左是指这样的情况
z=0;
x=y=z;