C语言-求一元二次方程的解-你是否会了呢?
求一元二次方程ax+bx+c=0的解。其解有以下几种可能:
①系数a=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;}