写的一元二次方程代码编译没有错,运行出错了找不到。求解惑
#include<stdio.h>#include<conio.h>
#include<math.h>
double x1,x2,disc;
void disc_1(double a,double b,double c)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
}
double disc_2(double a,double b,double c)
{
x1=x2=(-b+sqrt(disc))/(2*a);
return(x1);
}
double disc_3(double a,double b,double c)// disc<0 不是没有解吗?这个要怎么写呢?没东西可以写啊?
{
return(0);
}
int main(void)
{
double a,b,c,disc;
printf("please input a,b,c:");
scanf("%d,%d,%d",&a,&b,&c);
disc=b*b-4*a*c;
if(disc==0)
{
disc_2(a,b,c);
printf("the equation have only one root x1=x2=%f",x1);
}
else if(disc>0)
{
disc_1(a,b,c);
printf("the equation have two diffrent root x1=%f x2=%f",x1,x2);
}
else
{
disc_3(a,b,c);
printf("the equation have no root ");
}
getch();
return (0);
}
编译没有错误,但运行时出错,每次都是 disc_3 这个解。the equation have no root 求个大神看看哪里错了。
还有函数什么时候需要返回值,什么时候不需要?求解惑。。。。。。。。。。。。。。。