将 float 除以 int 并存储为 float - 除以零

Dividing float by int and storing as float - Division by zero

我有以下一段代码,它不想将 up 声明为 float,由 down 声明为 [=5] =].我试过将 down 转换为浮点数,但这也不起作用。 我得到的输出是 inf.

的 10 倍
int main(void) {
    float x = 0.1, y = 0.0;

    for (int n = 0; n < 10; n++) {
        float up = exp(x, n);
        int down = fac(n);

        y = up / down;

        printf("%f\n", y);

        x += 0.1;
    }

    return 0;
}

谁能帮我找出这段代码中的(巨大)错误? exp(x,n)fac(n) return 都是 updown 的正确值类型。

这是expfac

这两个函数
float exp(float x, int n) {
    float power = 1;

    for (int i = 0; i < n; i++) {
        power *= x;
    }
    return power;
}

int fac(int n) {
    int fac = 1;
    for (int i = 0; i <= n; i++) {
        fac *= i;
    }
    return fac;
}

你除以 0:

int fac = 1;
for (int i = 0; i <= n; i++) {
    fac *= i; /* This will be 0 since you start from i=0. */
}
return fac;

您可能只想从 1 开始。