C程序解决多项式问题

时间:2014-05-20 09:43:13

标签: c

我已经找到了程序的其余部分,我没有任何错误/警告,但现在我的问题是我从输入得到了错误的答案,但我不知道为什么。

相关代码:

int x;
float h;
printf("Enter a number:");
scanf("%d", &x);
h= (3x+2)/(2x-4);
printf("The answer is: %.2f \n", h);

它给了我一个向下舍入的数字。例如,如果我输入5,它将返回2.00,它应返回2.83。

请帮忙!

编辑:对不起,我有点累了。我确实把h的等式写成:

h= (3*x+2)/(2*x-4);

2 个答案:

答案 0 :(得分:3)

这不是有效的C代码。您无法使用隐式乘法(3x必须为3 * x等等。)

如果你解决了这个问题,你需要在float中进行算术运算以获得更好的精度。最简单的方法是只创建一个文字float

const float h = (3.f * x + 2) / (2 * x - 4);

应该这样做。

答案 1 :(得分:0)

这是因为隐式转换。变量h是浮点型。但是/运算符看到它必须除以两个整数,因此在结果中返回一个整数,它被隐式转换为浮点数。如果您想要浮点除法,请尝试将两个操作数设置为/ floats

float x;
float h;
printf("Enter a number:");
scanf("%f", &x);
h= (3*x+2)/(2*x-4);
printf("The answer is: %.2f \n", h);

OR

int x;
float h;
printf("Enter a number:");
scanf("%d", &x);
h= ((float)3*x+2)/((float)2*x-4);
printf("The answer is: %.2f \n", h);