c语言计算一元二次方程ax2+bx+c=0的根,C语言,求一元二次方程ax2+bx+c=0的根。

#include

#include

float x1,x2,disc,realpart,imagpart;//全局变量

float great_than_zero(float a,float b)//disc>0时的函数

{

x1=(float)(-b+sqrt(disc))/(2*a);//(v6默认是double型),强制类型转换使数类型据统一

x2=(float)(-b-sqrt(disc))/(2*a);

return(0);

}

float equal_to_zero(float a,float b)//disc=0时的函数

{

x1=x2=-b/(2*a);

return(0);

}

float smaller_than_zero(float a,float b)//disc<0时的函数

{

realpart=-b/(2*a);//复根的实部

imagpart=(float)sqrt(-disc)/(2*a);//复根的虚部

return(0);

}

int main()

{

float a,b,c;

int flag=1;

while(flag)

{

printf("input a,b,c:");

scanf("%f%f%f",&a,&b,&c);

printf("the equation:");

if(fabs(a)<=1e-6)

printf("is not a quadratic.input date again!\n");

else

{

printf("%5.2f*x*x+%5.2f*x+%5.2f=0\n",a,b,c);

printf("root:");

disc=b*b-4*a*c;

if(disc>0)

{

great_than_zero(a,b);

printf("has distinct real roots:x1=%5.2f\tx2=%5.2f\n",x1,x2);

}

else if(fabs(disc)<=1e-6)

{

equal_to_zero(a,b);

printf("has two equal roots:x1=x2=%5.2f\n",x1,x2);

}

else

{

smaller_than_zero(a,b);

printf("hascomplex roots:x1=%5.2f+%5.2fi\tx2=%5.2f-%5.2fi\n",realpart,imagpart,realpart,imagpart);

}

flag=0;

}

}

}

运行如下:

c语言计算一元二次方程ax2+bx+c=0的根,C语言,求一元二次方程ax2+bx+c=0的根。_第1张图片

你可能感兴趣的:(c语言计算一元二次方程ax2+bx+c=0的根,C语言,求一元二次方程ax2+bx+c=0的根。)