C 这个节目一切都好吗? 问题是-

C 这个节目一切都好吗? 问题是-,c,C,编写一个C函数,根据以下条件计算权重z的值- 如果x>y,则z=x^2-4*y 如果x

编写一个C函数,根据以下条件计算权重z的值-

如果x>y,则z=x^2-4*y

如果x z=x+y^3/4如果x=y

然后编写一个C主程序,读取x和y的值,并调用开发的函数来计算权重z的值

该程序是否适合所有可能的输入?这是一个repl.it版本-

我认为val1==val2的实现中存在逻辑错误


注意-我是编程或编码的初学者。

如果val1==val2表示just-else,您可以从删除else开始,因为这是剩下的唯一一种情况,最坏情况下您将避免浮点相等错误,最坏情况下您将简化代码一点

但真正的罪魁祸首是这句话:

result = pow( val1 + val2 , 3/4 ) ;

由于整数除法,3/4为0。例如,使用3.0/4或仅使用0.75。

如果just-else的val1==val2,您可以从删除else开始,因为这是剩下的唯一一种情况,您将避免浮点相等错误。是的,存在。精确比较通常不适用于浮动。只要删除else if,就让它成为else。@EugeneSh:这不会改变任何事情。是的,确实是这样:val1==val2的实现中有一个逻辑错误。写一个简单的程序,告诉你3/4的值。我投票结束这个问题,因为你要求的是a。你也可以使用类型转换。与float3/4类似。我建议使用double而不是float,因为您使用双文本&function0.75已经是double了。如果需要浮点,则需要0。75f@Jean-François Fabre文字是双重的,函数是双重的,但变量是浮动的:
result = pow( val1 + val2 , 3/4 ) ;