2 u011475211 u011475211 于 2014.12.19 21:43 提问

程序出错,无法解决请高手相助

/*二分法求根的算法,无法输出x0,x1,求高手*/

#include
int main()
{
double x,x0,x1;
double f,f0,f1;
x0=-10;
x1=10;
while(fabs(x1-x0)>=1e-6)
{
x=(x0+x1)/2;
f=x*(2*x*(x-4)+3)-6;
f0=x0*(2*x0*(x0-4)+3)-6;
f1=x1*(2*x1*(x1-4)+3)-6;
if(f*f0>0)
x0=x;
else
x1=x;
}
printf("%lf",x0);
return 0;
}

报错 has exited with code -1073741510 (0xC000013A).

8个回答

caozhy
caozhy   Ds   Rxr 2014.12.19 22:06
已采纳

不加math.h根本就不能编译。应该和这个无关。
你要求什么方程?
f=x*(2*x*(x-4)+3)-6;
这个么
为什么是2

caozhy
caozhy   Ds   Rxr 2014.12.19 21:49

我这里可以输出
3.812951Press any key to continue . . .

u011475211
u011475211 我这边只显示控制台,然后光标闪烁,没输出,什么情况
大约 3 年之前 回复
caozhy
caozhy   Ds   Rxr 2014.12.19 21:57

你要求什么方程,3.812是否正确。

u011475211
u011475211 谢谢
大约 3 年之前 回复
u011475211
u011475211 虽然答案不正确,我自己继续调试,找到问题了,忘了添加math.h
大约 3 年之前 回复
u011475211
u011475211 答案是2.000,等下我发图
大约 3 年之前 回复
u011475211
u011475211 答案是2.000,等下我发图
大约 3 年之前 回复
caozhy
caozhy   Ds   Rxr 2014.12.19 22:00

u014692369
u014692369   2014.12.19 22:41

你引用了fabs函数,所以要加math.h,如果你不加fabs函数,而是通过条件判断进行取绝对值的话就可以不加math.h(不过麻烦一些)

jouriayan
jouriayan   2014.12.20 12:22

math.h的问题~

caozhy
caozhy   Ds   Rxr 2015.01.03 07:13

f=x*(2*x*(x-4)+3)-6;
这种浮点数和整数乘除的,整数一定要先转换成浮点数

caozhy
caozhy   Ds   Rxr 2015.01.03 07:15

或者用 2.0f 代替 2。其余类似

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!