赞
踩
求一元二次方程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;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。