[求助]关于函数求根的问题
题目如下:求方程ax+bx+c=0的根,用3个函数分别求当b-4ac大于0、等于0和小于0是的根,并输出结果。从主函数输入a、b、c的值。
以下是我的程序:
#include<math.h>
float disc,x1,x2,p,q;
float rootzero(float a,float b) /*定义一个函数,用来求disc=0时方程的根*/
{
x1=x2=-b/(2*a);
}
float rootlarge(float a,float b) /*定义一个函数,用来求disc>0时方程的根*/
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
}
float rootsmall(float a,float b) /*定义一个函数,用来求disc<0时方程的根*/
{
p=-b/(2*a);
q=sqrt(disc)/(2*a);
}
main()
{
float a,b,c;
scanf("%f%f%f",&a,&b,&c);
disc=b*b+4*a*c;
printf("root:\n"); /*到这里都可以输出*/
if(disc<0)
{rootsmall(a,b);
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}
else if(disc>0)
{rootlarge(a,b);
printf("x1=%5.2f+%5.2fi,x2=%5.2f-%5.2fi\n",p,q,p,q);
}
else rootzero(a,b);
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}
我的程序运行后,输出到"root:",然后就显示"sqrt:DOMAIN error",然后换一行才显示x1,x2;
而却结果也不正确,我想了一下午也不明白到底那里错了.
各位朋友帮我看看程序那里出错了!先谢谢了!