1 #include<stdio.h>
2 #include<math.h>
3 void main()
4 {
5 float a=1.5;
6 float xn,xn_1,fn,fn_ci;
7 //scanf("%f",&a);
8 xn=a;
9 //fn=2*pow(xn,3)-4*pow(xn,2)+3*xn-6;
10 //fn_ci=2*3*pow(xn,2)-8*xn+3;
11 //xn_1=xn-fn/fn_ci;
12 //while(fabs(xn_1-xn)>1e-5)
13 do{
14 xn=xn_1;
15 fn=2*pow(xn,3)-4*pow(xn,2)+3*xn-6;
16 fn_ci=2*3*pow(xn,2)-8*xn+3;
17 xn_1=xn-fn/fn_ci;
18 }
19 while(fabs(xn_1-xn)>1e-5);
20 printf("%f\n",xn_1);
21 }
上面注释掉的部分是一开始使用while函数,使用while函数至少需要一个初值才能进行判断,这样就要把计算fn与fn导数分别计算一遍,但是使用do while语句,函数本身会保证至少执行一次,略微简单一些
另外,在do_while语句中的while后面要加上分号“;”