当前位置:   article > 正文

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

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。
      ③根据题目所完成的计算要求,程序中使用到的变量应该定义成单精度实型或双精度实型。

  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5. double a, b, c, x1, x2, t,d;
  6. printf("请输入a,b,c\n");
  7. scanf("%lf%lf%lf", &a, &b, &c);
  8. d = b * b - 4 * a * c;
  9. t = sqrt(d);
  10. x1 = (-b + t) / 2 * a;
  11. x2 = (-b - t) / 2 * a;
  12. if (a == 0)
  13. {
  14. printf("不是二次方程\n");
  15. }
  16. else if (fabs(d) <= 1.0e-6) //判断d的绝对值是否等于0
  17. {
  18. printf("有两个相等实根\n");
  19. printf("%.2lf,%.2lf", x1, x2);
  20. }
  21. else if (d > 1.0e-6) //判断d是否大于0
  22. {printf("有两个不等实根\n");
  23. printf("%.2lf,%.2lf", x1, x2);
  24. }
  25. else
  26. {
  27. printf("有两个共轭复根\n"); //无实根不输出
  28. }
  29. return 0;
  30. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/562901
推荐阅读
相关标签
  

闽ICP备14008679号