y=ln(x+3),x0=1,求方程的根,用牛顿法。我的答案总乱码啊,为什么

#include
#include
int main( )
{

int M=1000,k;

double x0,x1=1,eps=0.000001;
k=0;
for(;;) {

x0=x1;
k++;

printf("%.6f\n",x1);

x1=x0-log(x0+3)*(x0+3);
if(k>=M||fabs(x1-x0)<=eps)
break;
}

if(fabs(x1-x0)<=eps)
printf("%.6f\n",x1); }

http://wenku.baidu.com/link?url=NOb5gSNvZcpvifAYcP5E_2iMKLVsX52pqQRQ06Om8gE9upu7zzdGmBqO_Kg1e-XQX3VhpLiMa-XXiNvAKfuKBVPI7OO2Ou343zrkTWKIwr7

额,你这个没有对对数的定义域做出限定吧,在进行对数计算前加上一句if(x0>-3),试试看

printf("%.6f\n",x1);
改为
printf("%.6lf\n",x1);
x1是double型变量。