求一元二次方程 ax^2+bx+c=0 的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。结果保留三位小数。c语言
时间: 2023-11-29 17:04:04 浏览: 163
用Java编写程序,求一元二次方程ax²+bx+c=0的根(系数在程序中给定),并输出。
好的,对于您的问题,我可以回答。
以下是代码实现:
```c
#include <stdio.h>
#include <math.h>
void solveGreaterThanZero(float a, float b, float c) {
float x1, x2;
x1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
x2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
printf("当b^2-4ac>0时,方程的两个根为:x1=%.3f, x2=%.3f\n", x1, x2);
}
void solveEqualToZero(float a, float b, float c) {
float x;
x = (-b) / (2 * a);
printf("当b^2-4ac=0时,方程的两个根为:x=%.3f\n", x);
}
void solveLessThanZero(float a, float b, float c) {
float realPart, imagPart;
realPart = (-b) / (2 * a);
imagPart = sqrt(-(b * b - 4 * a * c)) / (2 * a);
printf("当b^2-4ac<0时,方程的两个根为:x1=%.3f+%.3fi, x2=%.3f-%.3fi\n", realPart, imagPart, realPart, imagPart);
}
int main() {
float a, b, c, delta;
printf("请输入一元二次方程的系数a、b、c:");
scanf("%f %f %f", &a, &b, &c);
delta = b * b - 4 * a * c;
if(delta > 0) {
solveGreaterThanZero(a, b, c);
} else if(delta == 0) {
solveEqualToZero(a, b, c);
} else {
solveLessThanZero(a, b, c);
}
return 0;
}
```
请注意,此解决方案可以正确地解决您的问题,但它不是一个完整的AI,它只是一个基本的计算程序。
阅读全文