gpt4 book ai didi

C - 求一个数的立方根

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:41 27 4
gpt4 key购买 nike

在我的一项作业中,我应该得到 x^2、x^4 的值和 x 的立方根,其中 x 的范围是 0 - 100。到目前为止,我已经有了这个。 (用5个数字测试)

#include <stdio.h>
#include <math.h>

int powers(int n)
{
return (n < 0) || (powers(n-1) && printf("%d\t%d\t%d\t\t%d\n", n, n*n, n*n*n*n, cbrt(n)));
}

int main(void)
{
printf("number\tx^2\tx^4\t\tx^(1/3)\n");
powers(5);

return 0;
}

我的输出

number    x^2    x^4        x^(1/3)
0 0 0 0
1 1 1 0
2 4 16 -108170613
3 9 81 1225932534
4 16 256 -1522700739
5 25 625 -1124154156

因此,我的平方和二次方程的工作原理非常简单,但我无法使用立方根。当我单独计算立方根时,它起作用了。printf("125 的立方根是 %f\n, cbrt(125)); 产生 125 的立方根是 5.0000

我需要帮助了解为什么它在我的函数中不起作用。 C 编程的新手,所以请善待。 (编译器:Borland C++ 和 IDE:C-Free 5.0)

最佳答案

问题是 cbrt 接受并返回一个 floatdouble 值,这意味着 cbrt(n) 会在将 n 传递给函数之前自动将其转换为 float/double。该函数将返回一个 float/double 但您没有将其存储在任何地方以强制转换回 int,而是直接传递它到 printf 指定 %d 因此该值被解释为 int,即使它实际上是 float/

一个简单的转换就足够了:(int)cbrt(n),或者您可以使用 %f%g 说明符和将其打印为真实类型。

同样存储在临时变量中会导致相同的转换行为:

int v = cbrt(n);
printf("%d\n", v);

关于C - 求一个数的立方根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36376704/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com