C语言-求一元二次方程的解-你是否会了呢?

求一元二次方程ax+bx+c=0的解。其解有以下几种可能:
①系数a=0时,该方程不是二次方程。

②判别式b²-4ac=0时,有两个相等实根。

③判别式b²-4ac>0时,有两个不等实根。

④判别式b²-4ac<0时,有两个共辄复根。

提示:

      ①程序中将使用到平方根函数sqrt()和求绝对值函数fabs(),所以需要在main()的前面加上头文件“math.h”。
      ②由于存储实数时存在舍入误差,因此不能直接判断d==0,而是通过判断d是否小于一个很小的数(如10^(-6)),如果小于此数,就认为d等于0。例如,可用表达式(fabs(d)<=1.0e-6))判断变量d的绝对值是否等于0;可用表达式(d>1.0e-6)判断变量d的值是否大于0。
      ③根据题目所完成的计算要求,程序中使用到的变量应该定义成单精度实型或双精度实型。

#include<stdio.h>
#include<math.h>          
int main()
{
	double a, b, c, x1, x2, t,d;
	printf("请输入a,b,c\n");
	scanf("%lf%lf%lf", &a, &b, &c);
	d = b * b - 4 * a * c;
	t = sqrt(d);
	x1 = (-b + t) / 2 * a;
	x2 = (-b - t) / 2 * a;
	if (a == 0) 
	{
		printf("不是二次方程\n");
	}
	else if (fabs(d) <= 1.0e-6)        //判断d的绝对值是否等于0
	{
		printf("有两个相等实根\n");
		printf("%.2lf,%.2lf", x1, x2);
	}
	else if (d > 1.0e-6)              //判断d是否大于0
	 {printf("有两个不等实根\n");
	  printf("%.2lf,%.2lf", x1, x2);
     }
	else
	{
		printf("有两个共轭复根\n");   //无实根不输出
	}
	return 0;
}

  • 16
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北冥有鱼-.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值