从键盘任意输入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"。
时间: 2023-05-31 17:17:51 浏览: 704
### 回答1:
以下是Python代码实现:
a = float(input("请输入a的值:"))
b = float(input("请输入b的值:"))
c = float(input("请输入c的值:"))
if a == :
print("it is not a quadratic equation!\n")
else:
p = -b / (2 * a)
q = abs(b**2 - 4 * a * c) ** .5 / (2 * a)
if b**2 - 4 * a * c == :
x1 = x2 = p
print("方程有两个相等的实根:x1 = x2 = ", x1)
elif b**2 - 4 * a * c > :
x1 = p + q
x2 = p - q
print("方程有两个不相等的实根:x1 = ", x1, ",x2 = ", x2)
else:
x1 = complex(p, q)
x2 = complex(p, -q)
print("方程有一对共轭复根:x1 = ", x1, ",x2 = ", x2)
输出结果:
请输入a的值:1
请输入b的值:-5
请输入c的值:6
方程有两个不相等的实根:x1 = 3. ,x2 = 2.
请输入a的值:2
请输入b的值:-4
请输入c的值:2
方程有两个相等的实根:x1 = x2 = 1.
请输入a的值:3
请输入b的值:-4
请输入c的值:5
方程有一对共轭复根:x1 = (.6666666666666666+1.1055415967851332j) ,x2 = (.6666666666666666-1.1055415967851332j)
请输入a的值:
请输入b的值:3
请输入c的值:2
it is not a quadratic equation!
### 回答2:
解题思路:
据题意需要从键盘任意输入三个变量 a,b,c。因此,需要在程序第一行用 input() 函数分别输入三个变量值,这三个值都需要转换成 float 类型,因为一般情况下输入值为字符串类型,不转换变量不能进行计算。
其次,需要判断是否是一元二次方程。当 a=0 时,则该方程不是二次方程。需要输出 "it is not a quadratic equation!",并结束程序。
接下来,需要根据求根公式对 b²-4ac 的值进行判断。当 b²-4ac 等于 0 时,有两个相等的实根 x1=x2=-b/2a。当 b²-4ac 大于 0 时,方程有两个不相等的实根 x1=(-b+sqrt(b²-4ac))/2a,x2=(-b-sqrt(b²-4ac))/2a。当 b²-4ac 小于 0 时,则有一对共轭复根 x1=-b/2a+qi,x2=-b/2a-qi。
最后,需要通过 print() 函数进行输出,输出文字信息或计算结果。
完整代码如下:
a = float(input("请输入 a 值:"))
b = float(input("请输入 b 值:"))
c = float(input("请输入 c 值:"))
if a == 0:
print("it is not a quadratic equation!")
else:
p = -b/(2*a)
q = abs(b**2-4*a*c)/(2*a)**0.5
if b**2-4*a*c > 0:
x1 = p+q
x2 = p-q
print("有两个不相等的实根,分别是:x1=", x1, "x2=", x2)
elif b**2-4*a*c == 0:
x1 = x2 = p
print("有两个相等的实根,都是:x1=x2=", x1)
else:
re = -b/(2*a)
im = abs(b**2-4*a*c)**0.5/(2*a)
x1 = complex(re, im)
x2 = complex(re, -im)
print("有一对共轭复根,分别是:x1=", x1, "x2=", x2)
### 回答3:
这道题目要求我们编写一个程序,根据输入的a、b、c值,计算一元二次方程的解并输出。下面是我编写的程序:
```
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c, p, q, x1, x2;
printf("请输入a、b、c的值:\n");
scanf("%f%f%f", &a, &b, &c);
if (a == 0)
{
printf("it is not a quadratic equation!\n");
}
else
{
p = b * b / (2 * a);
q = sqrt(fabs(b * b - 4 * a * c)) / (2 * a);
if (b * b - 4 * a * c == 0)
{
x1 = x2 = -p;
printf("方程有两个相等的实根:x1 = x2 = %f\n", x1);
}
else if (b * b - 4 * a * c > 0)
{
x1 = p + q;
x2 = p - q;
printf("方程有两个不相等的实根:x1 = %f,x2 = %f\n", x1, x2);
}
else
{
x1 = p + q * I;
x2 = p - q * I;
printf("方程有一对共轭复根:x1 = %f + %fi,x2 = %f - %fi\n", creal(x1), cimag(x1), creal(x2), cimag(x2));
}
}
return 0;
}
```
这个程序首先读入a、b、c的值,然后判断a是否为0,如果是则输出一条错误提示信息;否则根据一元二次方程的求根公式计算p和q的值。接着根据判别式的大小分别输出方程的不同解。注意需要使用cmath库的复数运算函数来对复数进行标准输出。
阅读全文