问题 问答题

下列给定程序中,函数fun和funx的功能是:用二分法求方程2x3-4x2+3x-6=0的一个根,并要求绝对误差不超过0.001。
例如,若给m输入-100,n输入90,则函数求得的一个根为2.000。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<sfdio.h>
#include<math.h>
double funx(double x)
[return(2*X*X*X-4*x*x+3*x-6);]
double fun(double m,double n)

/*******found********/
int ;;r=(m+n)/2;
/********found********/
while(fabs(n-m)<0.001)
ifcfunx(r)*funx(n)<0)m=r;
else n=r;
r=(m+n)/2;
return r;

main()

double m,n,root;
printf("Enter m n:\n");
scanf("%lf%lf",&m,&n);
root=fun(m,n);
printf("root=%6.3f\n",root);

答案

参考答案:double r; (2)while(fabs(n-m)>0.001)

解析:
本题关键字有:变量数据类型;while循环语句。
[微分析]
(1)程序中有r=(m+n)/2,m=r和n=r,而m和n都是double型的,所以定义变量r为double型。
(2)题目要求绝对误差不超过0.001,所以循环条件应为fabs(n-m)>0.001。

多项选择题
问答题 简答题