C语言写代码求方程ax^2 + bx + c = 0的根。分别考虑: a.有两个不相等的实根 b.有两个相等的实根
时间: 2024-10-16 07:10:52 浏览: 5
在C语言中,我们通常会使用二次公式来解决一元二次方程`ax^2 + bx + c = 0`的根。这个公式是:
\[ x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \]
下面分别介绍两个情况:
a. 有两个不相等的实根 (判别式大于0)
当`b^2 - 4ac > 0`时,方程有两个不同的实数解。我们可以编写如下代码:
```c
#include <stdio.h>
#include <math.h>
double calculateRoots(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);
printf("Roots are: %.2lf and %.2lf\n", root1, root2);
} else {
printf("No real roots.\n");
}
}
int main() {
double a, b, c;
// 输入系数...
calculateRoots(a, b, c);
return 0;
}
```
相关问题
C语言编程计算并输出一元二次方程ax^2+bx+c=0的两个实根
当给定一元二次方程的系数 a、b、c 时,可以使用以下公式来计算方程的两个实根:
x1 = (-b + √(b^2 - 4ac)) / (2a)
x2 = (-b - √(b^2 - 4ac)) / (2a)
下面是使用 C 语言编写的示例代码:
```c
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c, discriminant, x1, x2;
printf("请输入一元二次方程的系数:\n");
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
x1 = (-b + sqrt(discriminant)) / (2 * a);
x2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程的两个实根为:x1 = %.2lf,x2 = %.2lf\n", x1, x2);
} else if (discriminant == 0) {
x1 = x2 = -b / (2 * a);
printf("方程有两个相等的实根:x1 = x2 = %.2lf\n", x1);
} else {
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("方程的两个虚根为:x1 = %.2lf + %.2lfi,x2 = %.2lf - %.2lfi\n", realPart, imaginaryPart, realPart, imaginaryPart);
}
return 0;
}
```
你可以直接运行这段代码,并输入方程的系数 a、b、c,程序将会计算并输出方程的两个实根。
C语言,求方程式ax2+bx+c=0的根。分别考虑:①有两个不等的实根;②有两个相等的实根。
①有两个不等的实根:
根据公式,有两个根分别为:
x1 = (-b + sqrt(b^2 - 4ac)) / (2a), x2 = (-b - sqrt(b^2 - 4ac)) / (2a)
其中,b^2 - 4ac > 0
②有两个相等的实根:
根据公式,有一个根为:
x = -b / 2a
其中,b^2 - 4ac = 0
阅读全文