1
/* 给定程序中函数fun和funx的功能是:
用二分法求方程2x3-4x2+3x-6=0的一个根,并要求绝对误差不超过0.001。
例如,若给m输入 -100,给n输入90,则函数求得的一个根值为2.000。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 */
#include <stdio.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)
{
/**********ERROR**********/
int r;
r=(m+n)/2;
/**********ERROR**********/
while(fabs(n-m)<0.001)
{
if(funx(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);
}
【改错1】 错误
【学生答案】
float r;
【参考答案】
double r;
==============================
【改错2】 错误
【学生答案】
while(fabs(n-m)<=0.001)
【参考答案】
while(fabs(n-m)>0.001)
2
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
题目:一个已排好序的一维数组,输入一个数number,要求按原来
排序的规律将它插入数组中.
--------------------------------------------------------
注意:不可以增加或删除程序行,也不可以更改程序的结构。
----------------------------------------------