【代码】
【易错点】
double getroot(double x1, double x2)
{
...
return x1;//结果返回的应该是根,不是函数值fun(x1)
}
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define maxsize 100
//定义方程
double fun(double x)
{
return 2 * pow(x, 3) - 4 * pow(x, 2) + 3 * x - 6;
}
//二分法求方程的根
double getroot(double x1, double x2)
{
double x0;
while (fabs(x1 - x2) >= 1e-6)
{
x0 = (x1 + x2) / 2;
if (fun(x1)*fun(x0) <= 0)
{
x2 = x0;
}
else
{
x1 = x0;
}
}
return x1;
}
int main()
{
double x;
x = getroot(-10, 10);
printf("%.2f", x);
return 0;
}