一元二次方程求解
c语言实现
输入三个参数,分别为二次项系数、一次项系数和常数项系数,输出方程的解;
判断二次项系数是否为0,为0时提示错误;
根据根判别式确定根的情况:
delta>0 有两个不相等的实数根
delta=0 有两个相等的实数根
delta<0 有两个共轭复根(虚数)
#include<stdio.h>
#include<math.h>
//求根函数
void solve_equ(double a , double b, double c)
{
double x1,x2,delta,ch1,ch2;
if(a==0)
{
printf("该方程不是二次方程,请重新输入:\n");
printf("-----------------------\n");
}
else{
delta=b*b-4*a*c;
if(delta>0)
{
x1=(((-1)*b+sqrt(delta))/(2*a));
x2=(((-1)*b-sqrt(delta))/(2*a));
printf("该方程的根为:\n");
printf("x1=%.3lf x2=%.3lf\n",x1,x2);
printf("-----------------------\n");
}
else if(delta==0)
{
x1=((-1)*b)/(2*a);
x2=x1;
printf("该方程的根为:\n");
printf("x1=%.3lf x2=%.3lf\n",x1,x2);
printf("-----------------------\n");
}
else if(delta<0)
{
x1=((-1)*b)/(2*a);
delta=(-1)*delta;
ch1=sqrt(delta)/(2*a);
ch2=(-1)*(sqrt(delta)/(2*a));
printf("该方程的根为:\n");
printf("x1=%.3lf+%.3lfi x2=%.3lf%.3lfi\n",x1,ch1,x1,ch2);
printf("-----------------------\n");
}
}
}
//主函数
void main()
{
printf("方程形式为:a*x*x + b*x + c = 0\n") ;
double a,b,c;
while(1)
{
printf("请输入abc的值(以空格隔开):\n");
scanf("%lf%lf%lf",&a,&b,&c);
solve_equ(a,b,c);
}
}
运行结果: