问题描述:
求方程 的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。
样例输入:
4 1 1
样例输出:
x1=-0.125+0.484i x2=-0.125-0.484i
问题分析:
首先需要了解一元函数求根,分为三种情况,分别是根的判别式大于0,等于0,小于0。
1.△=b2-4ac=0
x1=x2=-b/2a。
2.△=b2-4ac>0
x1= [-b+ (b^2-4ac)^ (1/2)]/2a,x2= [-b-(b^2-4ac)^ (1/2)]/2a。
3.△=b2-4ac>0
代码实现:
#include <stdio.h>
#include <math.h>
double big(double a,double b,double c)
{
double data=b*b-4*a*c;
double x1=(-b+sqrt(data))/(2*a);
double x2=(-b-sqrt(data))/(2*a);
if(a==0&&b!=0)
{
printf("x1=%.3f x2=%.3f",-c/b,-c/b);
}
else
{
printf("x1=%.3f x2=%.3f",x1,x2);
}
}
double small(double a,double b,double c)
{
double data=b*b-4*a*c;
double e=-b/(2*a);
double f=sqrt(-data)/(2*a);
printf("x1=%.3f+%.3fi x2=%.3f-%.3fi",e,f,e,f);
}
double same (double a,double b,double c)
{
printf("x1=%.3f x2=%.3f",-b/(2*a),-b/(2*a));
}
int main ()
{
double a,b,c;
scanf("%lf %lf %lf",&a,&b,&c);
double data=b*b-4*a*c;
if(data > 0)
big(a,b,c);
if(data<0)
small(a,b,c);
if(data == 0)
same(a,b,c);
return 0;
}