gpt4 book ai didi

c - sqrt 函数出现小错误

转载 作者:行者123 更新时间:2023-11-30 18:41:39 24 4
gpt4 key购买 nike

我正在编写这个程序来查找数字的平方根。定义函数 mysqrt() 时。我正在使用牛顿拉夫森方法。在 if() 中,我使用 fabs(blah data blah) < 0.001 作为相对误差 EX。如果误差小于 0.1%,则答案是正确的。当我编译下面的代码时

我收到错误第 27 行:调用的对象“5.0e-1”不是函数。

我完全不知道它指的是什么。请帮忙谢谢。

我知道有一个 sqrt() 函数,但这是为了额外的学分作业,我已经写了大部分内容,但无法纠正此错误。

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

double mysqrt(double a);

int main()
{
double a, result;

printf("Enter a number to find the square root of: ");
scanf("%d", &a);

result = mysqrt(a);

printf("The square root of %d is %d \n", a, result);
}


double mysqrt(double num)
{
double x, new_x;
if((fabs(((x+1) - x)/(x+1)))<0.001)
{
for(x=2; x != num;)
{
new_x=(x+1);
new_x=(0.5(x+(num/x)));
x=new_x;
}
}
else
{
return new_x;
}
}

最佳答案

您在这里忘记了乘号:

new_x=(0.5(x+(num/x)));

这是一个非常常见的错误,当您看到“...不是一个函数。”时,这意味着您在某个地方有...(),这通常是一个被遗忘的乘法。

而且你的程序由于有很多括号而很难阅读,为什么不写:

new_x = 0.5 * (x + num/x);

此外,这个:

(fabs(((x+1) - x)/(x+1))) < 0.001

相当于:

fabs(1/(x+1)) < 0.001

在纸上进行简化,这将使您的程序更具可读性并且更容易发现错误。

关于c - sqrt 函数出现小错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20412966/

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