2016-06-09 66 views
-5

我能够运行该程序,但它没有做它应该做的。它一直在问号码。 (用C语言编写)为什么程序不断要求输入C?

算法我试图遵循的是 -
第1步:猜的值设置为1
第2步:如果|猜测^ 2 - X | (ε=ε)
步骤3:将猜测值设置为(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 ; 
} 
+0

向我们展示您所看到的。 –

+2

'while(value> epsilon)'循环永远不会进入/结束,因为'value,epsilon'不会改变数值..也许重新计算'value = asolute_value((guess * guess) - n);'in循环? – chux

+0

这是输出http://i.stack.imgur.com/d4CsI.png –

回答

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) ; 
} 
相关问题