一、求方程ax^2+bx+c=0的根,用三个函数分别求当:b^2-4ac大于0,等于0,和小于0时的根并输出结果。从主函数输入a,b,c的值。
#include <stdio.h>
#include<math.h>
float x,x1,x2,disc;
int main()
{
void fun1(float i,float j);
void fun2(float l,float m,float n);
void fun3(float o,float p,float q);
float a,b,c;
printf("请分别输入a,b,c的值:");
scanf("%f %f %f",&a,&b,&c);
if(a==0)
{
x=(-c)/b;
printf("该方程不是一元二次方程,但解为x=%f\n",x);
}
if (a!=0)
{
disc=b*b-4*a*c;
if(fabs(disc)<=1e-8)
fun1(a,b);
else if(disc>0)
fun2(a,b,c);
else if(disc<0)
fun3(a,b,c);
}
return 0;
}
void fun1(float i,float j)
{
float x;
x=-j/(2*i);
printf("该方程有两个相同的实根x1=x2=%f\n",x);
}
void fun2(float l,float m,float n)
{
disc=m*m-4*l*n;
x1=(-m+sqrt(disc))/(2*l);
x2=(-m-sqrt(disc))/(2*l);
printf("该方程有两个不同的实根\nx1=%f\nx2=%f\n",x1,x2);
}
void fun3(float o,float p,float q)
{
float e,f;
disc=p*p-4*o*q;
e=-p/(2*o);
f=sqrt(fabs(disc))/(2*o);
printf("该方程有两个共轭复数根\nx1=%f+%fi\nx2=%f-%fi\n",e,f,e,f);
}
运行结果
a=0
disc=0
disc>0
disc<0