#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); }
额,你这个没有对对数的定义域做出限定吧,在进行对数计算前加上一句if(x0>-3),试试看
printf("%.6f\n",x1);
改为
printf("%.6lf\n",x1);
x1是double型变量。