C语言函数的根问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 05:33:54
下面的程序怎么老是出现一个错误呢?第二个函数定义有误吗?
#include<math.h>
float f(float)
float avrx(float,float)
float root(float,float)
main()
{ float x1,x2,f1,f2,x;
do
{ printf("please input two numbers:\n");
scanf("%d%d",&x1,&x2);
f1=f(x1);f2=f(x2);
}while(f1*f2>0);
x=root(x1,x2);
printf("A root of equation is %8.4f",x);
}
float f(float x)
{ float y;
y=x*((x-5.0)*x+16.0)-80.0;
return y;
}
float avrx(float x1,float x2)
{ float y;
y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
return y;
}
float root(float x1,float x2)

float f(float)
float avrx(float,float)
float root(float,float) 三句后面都加上分号。
scanf("%d%d",&x1,&x2)改为scanf("%f%f",&x1,&x2)
if(y1*y>0) {x1=x;y1=f(x)}; 改为
if(y1*y>0) {x1=x;y1=f(x);}
或者直接用改过的程序:
#include<math.h>
float f(float);
float avrx(float,float);
float root(float,float);
main()
{ float x1,x2,f1,f2,x;
do
{ printf("please input two numbers:\n");
scanf("%f%f",&x1,&x2);
f1=f(x1);f2=f(x2);
}while(f1*f2>0);
x=root(x1,x2);
printf("A root of equation is %8.4f",x);
}
float f(float x)
{ float y;
y=x*((x-5.0)*x+16.0)-80.0;
return y;
}
float avrx(float x1,float x2)
{ float y;
y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
return y;
}
float root(float x1,float x2)
{ float y1,y,x;
y1=f(x1);
do
{ x=avrx(x1,x2);
y=f(x);
if(y1*y>0) {x1=x;y1=f(x);}
else