网络数字对讲机:关于c语言程序设计的问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/30 03:36:10
谁为好心的人能够给我的程序加一个精度的小程序在里面!我的程序是用弦截法求一元三次方程的根!我已经编的程序如下:
#include"stdio.h"
#define E1 1e-6
#include"math.h"
float a,b,c,d;
float f(float x)
{ float y;
y=a*x*x*x+b*x*x+c*x+d;
return y;
}
float x_point(float x1,float x2)
{ float x;
x=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
return(x);
}
float x_root(float x1,float x2)
{float x,y,y1;
y1=f(x1);
do
{ x=x_point(x1,x2);
y=f(x);
if(y*y1>0)
{x1=x;y1=y;}
else
{x2=x;}
}while(fabs(y)>=E1);
return(x);
}
main()

{
float x1,x2,x;
printf("input a,b,c,d:");
scanf("%f,%f,%f,%f",&a,&b,&c,&d);
do
{printf("input x,y:");
scanf("%f,%f",&x1,&x2);
}while(f(x1)*f(x2)>=0);
x=x_root(x1,x2);
printf("x=%f\n",x);
}
好的!我把问题说清楚一点。这个问题涉及到c语言的佚代程序,主要是往里面加一些程序让程序佚代的次数是有限的,不能永远的佚代下去。

自己看着办

如果把float全部改为double,scanf函数中的%f改为%lf,"#define E1 1e-6"改为"#define E1 1e-15",最后的"printf("x=%f\n",x);"改为"printf("x=%.15lf\n",x);",则精度可达到1e-15.

提问题能不能认真点,问题都没说清楚,怎么帮你啊?

我也看不懂