三章1.编写一个求方程 ax2 + bx + c = 0 的根 的程序,用 3 个函数分别求当 b2-4ac 大于零、等于零、和小于零时的方程的根。要求从主函
时间: 2024-02-11 22:08:20 浏览: 78
已知二元一次方程ax²+bx+c=0(a≠0),编程实现求解方程的根。(分三种情况考虑)
下面是符合您要求的C语言程序:
```c
#include <stdio.h>
#include <math.h>
void roots1(double a, double b, double c); // b^2-4ac>0
void roots2(double a, double b, double c); // b^2-4ac=0
void roots3(double a, double b, double c); // b^2-4ac<0
int main() {
double a, b, c;
printf("请输入二次方程的系数a, b, c:\n");
scanf("%lf %lf %lf", &a, &b, &c);
double delta = b * b - 4 * a * c;
if (delta > 0) {
roots1(a, b, c);
} else if (delta == 0) {
roots2(a, b, c);
} else {
roots3(a, b, c);
}
return 0;
}
void roots1(double a, double b, double c) {
double x1, x2;
x1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
x2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
printf("该方程有两个实数解:x1 = %lf, x2 = %lf\n", x1, x2);
}
void roots2(double a, double b, double c) {
double x;
x = -b / (2 * a);
printf("该方程有唯一解:x1 = x2 = %lf\n", x);
}
void roots3(double a, double b, double c) {
double realPart, imagPart;
realPart = -b / (2 * a);
imagPart = sqrt(-b * b + 4 * a * c) / (2 * a);
printf("该方程有两个虚数解:x1 = %lf + %lfi, x2 = %lf - %lfi\n", realPart, imagPart, realPart, imagPart);
}
```
上述程序定义了三个函数,分别对应于当 $b^2-4ac>0$、$b^2-4ac=0$、$b^2-4ac<0$ 时的方程根的计算。在主函数中,使用了if-else语句来根据 $b^2-4ac$ 的值选择相应的函数进行计算。
希望这个回答对您有帮助!
阅读全文