用c语言编写求一元二次方程的根,a>0
时间: 2024-10-16 10:06:56 浏览: 10
在C语言中,求解一元二次方程ax^2 + bx + c = 0(其中a > 0)通常采用公式法。首先,我们需要计算判别式D = b^2 - 4ac,然后根据判别式的值来决定根的情况:
1. 如果D > 0,方程有两个实数根,可以分别通过下面的公式计算:
x1 = (-b + sqrt(D)) / (2a)
x2 = (-b - sqrt(D)) / (2a)
2. 如果D = 0,方程有一个重根(即两个相同的实数根),根为:
x = -b / (2a)
3. 如果D < 0,方程有两个复数根,这时需要引入虚数单位i,但在这里我们一般只处理实数根。
以下是C代码示例:
```c
#include <stdio.h>
#include <math.h>
double quadratic(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
double root1 = (-b + sqrt(discriminant)) / (2 * a);
double root2 = (-b - sqrt(discriminant)) / (2 * a);
return (root1, root2);
} else if (discriminant == 0) {
return -b / (2 * a);
} else {
printf("方程无实数解,有复数根。\n");
// 对于复数根,这里仅打印一条消息,实际应用需处理
}
}
int main() {
double a, b, c;
printf("请输入一元二次方程的系数a、b、c: ");
scanf("%lf %lf %lf", &a, &b, &c);
if (a <= 0) {
printf("错误:a必须大于0。\n");
return 1;
}
double roots[2];
roots = quadratic(a, b, c);
for (size_t i = 0; i < 2; i++) {
printf("根%d: %.2f\n", i + 1, roots[i]);
}
return 0;
}
```
阅读全文