求解思路:
(1)a=0时,不是二次方程。
(2)b^2-4ac=0,有两个相等的实根。
(3)b^2-4ac>0,有两个不等实根。
(4)b^2-4ac<0,有两个共轭复根。
代码如下:
//求一元二次方程的解
#include<stdio.h>
#include<math.h>
int main() {
float a, b, c, p, q, dis; //二次项系数a,一次项系数b,零次项系数c
printf("请分别输入二次项系数的值,一次项系数的值,0次项系数的值:");
scanf_s("%f%f%f", &a, &b, &c);
if (a == 0) {
printf("不是二次方程\n");
}
else {
dis = b * b - (4 * a * c);
p = -b / (2 * a);
q = sqrt(dis) / (2 * a);
if (dis == 0) {
printf("方程有两个等实根为%7.4f\n", p + q);
}
else if (dis > 0) {
printf("方程有两个不等实根为%7.4f\t%7.4f\n", p + q, p - q);
}
else {
q = sqrt(-dis) / (2 * a);
printf("方程有两个共轭复根:%7.4f+%7.4fi\t%7.4f-%7.4fi", p, q, p, q);
}
}
return 0;
}
运行结果如下:
(1)输入a b c 的值为 1 2 1,得到两个相等实根。
![](https://i-blog.csdnimg.cn/blog_migrate/55430f41af0f87521a5970995b7d2273.png)
(2)输入 a b c 的值为 1 2 3,得到两个共轭复根。
![](https://i-blog.csdnimg.cn/blog_migrate/b78c49521721a8776ce273724f63041e.png)
(3)输入 a b c 的值为 2 6 2,得到两个不等实根。
![](https://i-blog.csdnimg.cn/blog_migrate/11623757bd470be7c5f3e1f1c9b87874.png)
欢迎探讨交流。