要求
编写程序,求方程ax2+bx+c=0的根,用三个函数分别求b2-4ac大于0,等于0和小于0时的根。
代码
#include<stdio.h>
#include<math.h>
#define EPSILON 1E-6
//计算并输出两个不等实根
void fun1(double a,double b,double c)
{
double x1,x2;
// 请在下面添加代码
// ********** Begin **********
int s = b*b-4*a*c;
if(s>0)
{
x1 = ((0-b)+sqrt(s))/(2*a);
x2 = ((0-b)-sqrt(s))/(2*a);
}
// ********** End **********
printf("方程有两个不等实根:%.2f,%.2f\n",x1,x2);
}
//计算并输出两个相等实根
void fun2(double a,double b,double c)
{
double x1,x2;
// 请在下面添加代码
// ********** Begin **********
int s = b*b-4*a*c;
if(s==0)
{
x1 = (0-b)/(2*a);
x2 = (0-b)/(2*a);
}
// ********** End **********
printf("方程有两个相等实根:%.2lf,%.2lf\n",x1,x2);
}
//计算并输出两个共轭复根
void fun3(double a,double b,double c)
{
double p,q;
// 请在下面添加代码
// ********** Begin **********
int s = b*b-4*a*c;
if(s<0)
{
p = (0-b)/(2*a);
q = sqrt(0-s)/(2*a);
}
// ********** End **********
printf("方程有两个共轭复根:%.2lf+%.2lfi,%.2lf-%.2lfi\n",p,q,p,q);
}
//计算方程的根
void fun(double a,double b,double c)
{
double delta=b*b-4*a*c;
if(fabs(delta)>EPSILON)
{
if(delta>0)
fun1(a,b,c);
else
fun3(a,b,c);
}
else
fun2(a,b,c);
}
测试
测试输入
3 6 8
输出
方程有两个共轭复根:-1.00+1.29i,-1.00-1.29i