解一元二次方程的根:

 

 一元二次方程:ax*x+bx+c=0

基本思路:

1a=0时,此方程不是一元二次方程,而是bx+c=0,此时方程的解为x=-c/b

2、当a0时,此方程才是一元二次方程,同时会出现以下情况:

    1b*b-4*a*c=0,此时方程有两个相等的实根,即x1=x2=-b/2a

    2b*b-4*a*c>0此时方程有两个不相等的实根,x1=              x2=

3b*b-4*a*c<0,此方程无实根。

编程思路:

头文件选择:

#include <stdio.h>标准输入输出代码

#include <math.h>数学函数库,一些数学计算的公式具体实现,比如平方,开方等。Sqrt()--平方根计算

定义变量:void Fun(double a,double b,double c)

{ double x1;

double x2;

double d = b*b - 4*a*c;

因为方程的根在大多情况下是小数,所以此时定义变量用浮点型或者double型。

使用宏定义:#define EPS 0.000001

因为定义的变量为浮点型,而浮点型不能用来作比较,故而通过定义一个精度,使用时在给定范围内,可将其结果近似为0,从而完成变量与零值的比较;

算法思路:

         解一元二次方程的根     

代码:

#include <stdio.h>
#include <math.h>
#define EPS 0.000001

void Fun(double a,double b,double c)
{
double x1;
double x2;
double d = b*b - 4*a*c;
if(-EPS<=a && a<EPS)//a==0
{
x1 = x2 = -c/b;
printf("x1=%f,x2=%f\n",x1,x2);
}
else //a != 0
{
if(-EPS<=d && d<=EPS)//d==0
{
x1=x2=-b/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);
}
else
{
if(d > EPS)
{
x1 = (-b+sqrt(d))/(2*a);
x2 = (-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);
}
else //d<0
{
printf("无实根\n");
}
}
}
}


int main()
{
Fun(0,1,2);
Fun(1,2,1);
Fun(1,4,2);
Fun(1,1,1);
return 0;

}

解一元二次方程的根

相关文章: