C语言从键盘任意输入a,b,c的值,编程计算并输出一元二次方程ax2+bx+c=0的根。根据一元二次方程的求根公式,令 p=−b2a,q=∣∣b2−4ac∣∣√2a 当b2−4ac=0时,输出两个相等的实根x1=x2=p;当b2−4ac>0时,输出两个不相等的实根:x1=p+q,x2=p−q;当b2−4ac<0时,输出一对共轭复根:x1=p+qi,x2=p−qi。当a=0时,输出"It is not a quadratic equation!\n"。 提示:用fabs(a)<=1e-6表示==关系。 **输入格式要求:"%f,%f,%f" 提示信息:"Please enter the coefficients a,b,c:" **输出格式要求: 相等实根: "x1 = x2 = %.2f\n" 不相等的实根: "x1 = %.2f, x2 = %.2f\n" 一对共轭复根: "x1 = %.2f+%.2fi, x2 = %.2f-%.2fi\n"
时间: 2024-02-24 22:53:52 浏览: 179
C语言解一元二次方程的根
4星 · 用户满意度95%
好的,以下是代码实现:
```c
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c;
printf("Please enter the coefficients a,b,c:");
scanf("%f,%f,%f", &a, &b, &c);
float p, q, x1, x2;
if (fabs(a) <= 1e-6) {
printf("It is not a quadratic equation!\n");
} else {
p = -b / (2 * a);
q = sqrt(fabs(b * b - 4 * a * c)) / (2 * a);
if (fabs(b * b - 4 * a * c) <= 1e-6) {
// 两个相等的实根
x1 = x2 = p;
printf("x1 = x2 = %.2f\n", x1);
} else if (b * b - 4 * a * c > 0) {
// 两个不相等的实根
x1 = p + q;
x2 = p - q;
printf("x1 = %.2f, x2 = %.2f\n", x1, x2);
} else {
// 一对共轭复根
printf("x1 = %.2f+%.2fi, x2 = %.2f-%.2fi\n", p, q, p, q);
}
}
return 0;
}
```
代码实现的思路是:首先从键盘输入a、b、c三个系数,然后根据一元二次方程的求根公式计算出p和q的值,进而判断方程有几个根以及根的类型,输出结果。注意,如果a等于0,那么它不是一个二次方程,程序应该输出 It is not a quadratic equation!。
阅读全文