求方程ax2+bx+c=0的根,用3个函数分别求当b2-4ac大于0、等于0和小于0时的根并输出结果。从主函数输入a、b、c的值
时间: 2023-10-06 17:07:05 浏览: 73
好的,我了解了,您的第一个问题是有关方程的。我将为您提供三个函数分别计算方程ax2+bx+c=0的根。这些函数将根据b2-4ac的值输出不同的结果。
1. 当b²-4ac>0时,方程有两个实根。以下是这种情况下的函数代码:
```
#include <stdio.h>
#include <math.h>
void solve_quad_eq_greater_than_zero(float a, float b, float c) {
float x1 = (-b + sqrt(b*b - 4*a*c)) / (2*a);
float x2 = (-b - sqrt(b*b - 4*a*c)) / (2*a);
printf("方程的两个实根为:x1 = %.2f,x2 = %.2f\n", x1, x2);
}
```
2. 当b²-4ac=0时,方程有一个重根。以下是这种情况下的函数代码:
```
#include <stdio.h>
void solve_quad_eq_equal_to_zero(float a, float b, float c) {
float x = -b / (2*a);
printf("方程的一个重根为:x = %.2f\n", x);
}
```
3. 当b²-4ac<0时,方程有两个共轭复根。以下是这种情况下的函数代码:
```
#include <stdio.h>
#include <math.h>
void solve_quad_eq_less_than_zero(float a, float b, float c) {
float realPart = -b / (2*a);
float imaginaryPart = sqrt(fabs(b*b - 4*a*c)) / (2*a);
printf("方程的两个共轭复根为:x1 = %.2f + %.2fi,x2 = %.2f - %.2fi\n", realPart, imaginaryPart, realPart, imaginaryPart);
}
```
您可以在主函数中按如下方式调用这些函数,根据需要选择相应的函数:
```
int main() {
float a, b, c;
printf("请输入方程的系数:\n");
scanf("%f %f %f", &a, &b, &c);
float discriminant = b*b - 4*a*c;
if (discriminant > 0) {
solve_quad_eq_greater_than_zero(a, b, c);
} else if (discriminant == 0) {
solve_quad_eq_equal_to_zero(a, b, c);
} else {
solve_quad_eq_less_than_zero(a, b, c);
}
return 0;
}
```
希望这能帮助您解决方程问题!
阅读全文