C程序解决多项式问题

C程序解决多项式问题,c,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.83时返回2.00 请帮忙 编辑:对不起,我有点累了。我确实把h的方程写成:

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

相关代码:

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.83时返回2.00

请帮忙

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

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

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

如果您解决了这个问题,您需要在
float
中执行算术以获得更好的精度。最简单的方法是使其中一个文本浮动:

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

应该这样做。

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

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);


3x
2x
是打字错误还是说
2*x
h=(3*x+2.0f)/(2*x-4)是的。对不起,我做了编辑。现在就试试。谢谢大家的帮助!您需要检查
x
是否与
2
不同,否则您将出现被0除的错误。啊,我明白了。我将来会记住这一点。出于我的目的,输入的整数将是5,所以我不必担心这个问题,但谢谢你。无论出于什么原因,这给了我一个错误,所以我肯定我没有把它放在正确的区域。我使用了另一个海报的解决方案,现在可以使用了,但非常感谢您的帮助。我真的很感激。编辑:我希望我可以发布整个代码,但我认为如果我这样做,我可能会违反某些规定。
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);