早教吧 育儿知识 作业答案 考试题库 百科 知识分享

C语言解方程问题#include"stdio.h"#include"math.h"floatf(floatx);voidmain(){floatx,x1=0,x2=10;x=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));while(fabs(f(x))>=1e-6){if(f(x)<0)x1=x;elsex2=x;x=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));}pr

题目详情
C语言 解方程问题#include "stdio.h" #include "math.h" float f(float x); void main() { float x,x1=0,x2=10; x=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)); while(fabs(f(x))>=1e-6) { if(f(x)<0) x1=x; else x2=x; x=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)); } printf("%f\t%f",x,f(x)); getch(); } float f(float x) { return (x*x*x-5*x+16*x-80); } 可能是 while(fabs(f(x))>=1e-6) 的问题 我编译没问题 可是运行竟然是个空白 而我把1e-6精度缩小的话 运行能够成功 是程序无法达到1e-6精度的原因吗??为什么?? 哪位高手帮我解答一下 急急!!!!!!
▼优质解答
答案和解析
你说的是对的 精度无法达到 这个与你定义的float类型有关 由于float类型只能精确到小数点后6位 也就是说你的while循环始终会成立 不会有输出结果,但是缩小一点就没有问题了