求ax^2+bx+c=0的根

这是一个C语言程序,用于求解二次方程ax^2+bx+c=0的根。程序首先检查a是否等于0,然后根据判别式d=b^2-4ac的值分别处理三种情况:两个实根、一个实根(重复)、无实根。通过定义误差值EPS来处理浮点数的不精确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

求ax^2+bx+c=0的根

源程序为:

#include <stdio.h>
#include <math.h>

/*浮点数不精确:用有限的存储单元存储一个实数,不可能完全精确的存储,需要定义误差*/

#include <float.h> //定义误差使用的头文件

# define EPS 0.0000001 //定义误差,使其在范围内为0

void fun ( int a ,int b ,int c) //定义求根函数
{
 double x1,x2,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 ( d>EPS )  //d>0时
  {
   x1=( -b + sqrt (d) ) / ( 2*a );

   x2=( -b - sqrt (d) ) / ( 2*a );
   printf (" x1=%f,x2=%f \n ", x1 , x2 );
  }
  else if (-EPS <=d && d<=EPS)  //d为0时
  {
   x1 = x2 = -b / ( 2*a );
   printf (" x1=%f,x2=%f\n ", x1, x2);
  }
  else  //d<0时
  {
   printf("此方程无根\n");
  } 
    }
}
int main()
{
 fun(1,2,3);
 fun(1,2,1);
 fun(0,2,3);
 fun(1,1,3);
 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值