求大神,哪里錯了?
#include<stdio.h>
#include<math.h>
float sqrt1(float a)
{
float x0, x1;
x0=a/2; //給x0賦初值a/2?
do
{
x1=(x0+a/x0)/2;
x0=x1; //迭代求平方根
}while(fabs(x0-x1)>10e-6);
return x1; ?
}
int main()
{
float a;
printf ("Please enter a:\n");
scanf ("%f", &a);
if (a>0)
{
printf ("自定義函數(shù)求解:%f\n", sqrt1(a));
printf ("庫函數(shù)求解:%f\n", sqrt(a));
}?
return 0;?
}
輸入100為什么輸出前一個是20多,后一個是10
但假如我把x0=a/2 下面加上迭代公式,再將do while里的復(fù)合語句顛倒就輸出正確了
可是我感覺這么改并沒有什么區(qū)別啊?求大神。
2017-01-18
在x0=x1后x0-x1=0就直接出循環(huán)了