一元二次方程 ax^2+bx+c=0 的解有以下几种可能: ①系数a=0时,该方程不是二次方程。 ②判别式b^2-4ac=0时,有两个相等实根。 ③判别式b^2-4ac>0时,有两个不等实根。 ④判别式b^2-4ac<0时,有两个共轭复根。 请编写c语言程序判断其根类型,并求出具体的解的值。
时间: 2023-05-20 09:05:10 浏览: 40
以下是一个简单的 C 语言程序,可以判断一元二次方程的根类型并求出具体的解的值:
```c
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c, discriminant, root1, root2, realPart, imaginaryPart;
printf("请输入一元二次方程的系数:\n");
printf("a = ");
scanf("%f", &a);
printf("b = ");
scanf("%f", &b);
printf("c = ");
scanf("%f", &c);
discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("该方程有两个不等实根:\n");
printf("x1 = %.2f\n", root1);
printf("x2 = %.2f\n", root2);
} else if (discriminant == 0) {
root1 = root2 = -b / (2 * a);
printf("该方程有两个相等实根:\n");
printf("x1 = x2 = %.2f\n", root1);
} else {
realPart = -b / (2 * a);
imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("该方程有两个共轭复根:\n");
printf("x1 = %.2f + %.2fi\n", realPart, imaginaryPart);
printf("x2 = %.2f - %.2fi\n", realPart, imaginaryPart);
}
return 0;
}
```
当用户输入一元二次方程的系数 a、b、c 后,程序会先计算出判别式的值,然后根据判别式的大小分别输出不同类型的根。如果判别式大于 0,则有两个不等实根;如果判别式等于 0,则有两个相等实根;如果判别式小于 0,则有两个共轭复根。