解一元二次方程的根

解一元二次方程的根:

 

 一元二次方程: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;

}


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值