求方程ax2+bx+c=0的根,用三个子函数分别求当:b2-4ac大于0、等于0和小于0时的根并输出结果,从主函数输入a,b,,c的值。【提示:可将根及判别式等使用全局变量】
时间: 2023-11-29 20:12:55 浏览: 51
好的,我知道了。下面是实现这个功能的代码:
```c
#include <stdio.h>
#include <math.h>
double x1, x2, delta;
void calc_root_greater_than_0(double a, double b, double c) {
delta = b * b - 4 * a * c;
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("方程有两个不相等的实数根:x1=%.2lf,x2=%.2lf\n", x1, x2);
}
void calc_root_equal_to_0(double a, double b, double c) {
delta = b * b - 4 * a * c;
x1 = (-b) / (2 * a);
printf("方程有两个相等的实数根:x1=x2=%.2lf\n", x1);
}
void calc_root_less_than_0(double a, double b, double c) {
delta = b * b - 4 * a * c;
double real_part = (-b) / (2 * a);
double imag_part = sqrt(-delta) / (2 * a);
printf("方程有两个共轭复数根:x1=%.2lf+%.2lfi,x2=%.2lf-%.2lfi\n", real_part, imag_part, real_part, imag_part);
}
int main() {
double a, b, c;
printf("请输入a、b、c的值:");
scanf("%lf%lf%lf", &a, &b, &c);
if (b * b > 4 * a * c) {
calc_root_greater_than_0(a, b, c);
} else if (b * b == 4 * a * c) {
calc_root_equal_to_0(a, b, c);
} else {
calc_root_less_than_0(a, b, c);
}
return 0;
}
```
在这个程序中,我们定义了三个子函数 calc_root_greater_than_0、calc_root_equal_to_0 和 calc_root_less_than_0,分别用于计算当 b²-4ac 大于、等于和小于 0 时的方程根,并输出结果。主函数中,我们首先读取用户输入的 a、b、c 的值,然后根据 b²-4ac 的大小,调用相应的子函数计算方程根。在每个子函数中,我们都先计算出方程的判别式 delta 的值,然后根据 delta 的正负情况分别计算出方程的根,并输出结果。
阅读全文
相关推荐


















