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

#include#include   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{printf("有两个共轭复根\n");   //无实根不输出}return 0;}