为什么程序继续要求C中的输入?

时间:2016-06-09 20:20:44

标签: c

我能够运行该程序,但它没有做到它应该做的事情。它一直在询问这个数字。 (以C写的)

我想要遵循的算法是 -
第1步:将guess的值设置为1.
第2步:如果|猜^ 2 - x | < ε,进入步骤4.(ε= epsilon)
步骤3:将guess的值设置为(x / guess + guess)/ 2并返回步骤2 第4步:猜测是平方根的近似值。

This is the output I am getting

#include <stdio.h>

float sqr_root(float n);
float absolute_value(float n) ;

int main(void)
{
    float n ;
    printf("Enter a positive number :");
    scanf("%f" , &n);

    printf("Square root of %f is %f \n" , n , sqr_root(n) );

}


float absolute_value(float n)
{
    if (n < 0)
    {
        n = -n ;
    }
    return (n) ;
}

float sqr_root(float n)
{
    const float epsilon = 0.00001 ;
    float guess = 1.0 ;

    float value = absolute_value( (guess * guess ) - n ) ;

    while (value > epsilon )
    {
        guess = (( n / guess) + guess ) / 2 ;
    }


    return guess ;
}

1 个答案:

答案 0 :(得分:1)

while (value > epsilon )循环永远不会进入/结束,因为value, epsilon不会更改值。

添加value = asolute_value( (guess * guess ) - n ) ;以更正拼写循环。

while (value > epsilon )
{
    guess = (( n / guess) + guess ) / 2 ;
    value = absolute_value((guess * guess ) - n ) ;
}