如何在C语言中计算一元二次方程的根?
时间: 2024-10-17 21:14:26 浏览: 142
C语言 - 计算一元二次方程的根.zip
在C语言中,要计算一元二次方程的根,你可以使用著名的二次公式,其形式为:
\[ x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \]
其中 \( a \), \( b \) 和 \( c \) 是二次方程的标准系数,即 \( ax^2 + bx + c = 0 \)。
以下是一个简单的函数实现,使用了`cmath`库中的`sqrt()`函数来计算平方根:
```c
#include <stdio.h>
#include <math.h>
// 函数声明
double quadratic(double a, double b, double c);
int main() {
double a, b, c;
// 获取方程系数
printf("Enter coefficients a, b, and c for the equation ax^2 + bx + c = 0: ");
scanf("%lf %lf %lf", &a, &b, &c);
// 检查是否为标准形式(a不等于0)
if (a == 0) {
printf("Error: 'a' must not be zero.\n");
return 1;
}
// 计算并打印根
double root1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
double root2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
printf("The roots are:\n");
printf("Root 1: %.2lf\n", root1);
printf("Root 2: %.2lf\n", root2);
return 0;
}
// 函数定义,用于计算二次方程的根
double quadratic(double a, double b, double c) {
return (-b + sqrt(b * b - 4 * a * c)) / (2 * a); // 只返回一个根,因为sqrt()函数可能没有复数支持
}
```
这个程序首先获取用户输入的三个系数,然后检查`a`是否非零。接着,如果满足条件,它会调用`quadratic`函数计算两个根并打印结果。
如果你只对其中一个实根感兴趣,`quadratic`函数可以直接返回;但请注意,如果没有提供复数支持,`sqrt()`函数在判别式小于0时会返回错误值。
阅读全文