浮点函数不 return 浮点值

Float function does not return float value

我编写了两个简单的函数。我希望用户写入一个整数值,然后程序找到这两个函数的输出。代码如下所示,

#include <stdio.h>

float f(int x) {
    
    return ((x * (x-2)) / 2);   
}

float g(int x) {
    
    return (x * (x - 1) * (x - 2) / 3);
}

int main() {
    
    int i;
    float f0, g0;
    
    scanf("%d", &i);
    
    f0 = f(i);
    g0 = g(i);
    
    printf("f(%d) = %0.2f , g(%d) = %0.2f", i, f0, i, g0);
    
    return 0;
}

我创建了 float 函数,但是当我输入 5 时,f 函数应该给我 7.5 但我却有 7作为输出。

我该如何解决这个问题?

在 return 语句中的这两个表达式中

return ((x * (x-2)) / 2);   
return (x * (x - 1) * (x - 2) / 3);

这里用到了整数运算

更改这些语句,例如

return ((x * (x-2)) / 2.0f);   
return (x * (x - 1) * (x - 2) / 3.0f);

return (( ( float )x * (x-2)) / 2);   
return (( float )x * (x - 1) * (x - 2) / 3);
float f(float x){
    
    return ((x * (x-2)) / 2);   
}

float g(float x){
    
    return (x * (x - 1) * (x - 2) / 3);
}

你好。请删除 int 并将 float 放入参数