# 求一元二次方程a*x*x+b*x+c=0的二个根 ''' 【问题描述】从键盘分三行输入a,b,c的值,要求a不为0,求一元二次方程a*x*x+b*x+c=0的二个根。 依据Δ=b*b-4*a*c进行判断: 若Δ>0成立,输出两个实根x1,x2,浮点数保留2位小数(两个实根,大数是x1,小的数是x2)。 若Δ<0,输出两个复数根(real+imagj)、(real-imagj)。提示real和imag用round(x,2)函数进行四舍五入,用complex(real,imag)获得复数。虚部为正数是x1,虚部为负数是x2 若Δ=0,输出2个相等的实根,浮点数保留2位小数
时间: 2024-03-23 17:40:13 浏览: 35
以下是Python代码实现:
```
import math
a = float(input())
b = float(input())
c = float(input())
delta = b * b - 4 * a * c
if delta > 0:
x1 = (-b + math.sqrt(delta)) / (2 * a)
x2 = (-b - math.sqrt(delta)) / (2 * a)
print(round(x1, 2), round(x2, 2))
elif delta < 0:
real = round(-b / (2 * a), 2)
imag = round(math.sqrt(-delta) / (2 * a), 2)
x1 = complex(real, imag)
x2 = complex(real, -imag)
print(x1, x2)
else:
x = -b / (2 * a)
print(round(x, 2), round(x, 2))
```
注意,以上代码只是实现了一元二次方程的求解,如果需要完整的交互式对话,需要结合其他技术(如自然语言处理、对话管理等)进行实现。
相关问题
编写c语言,由键盘输入一个一元二次方程,a*x*x+b*x+c=0(a!=0)的a,b,c的值,求方程的解
```c
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c, delta, x1, x2;
printf("请输入一元二次方程的系数a,b,c:\n");
scanf("%f%f%f", &a, &b, &c);
delta = b * b - 4 * a * c;
if (delta < 0) {
printf("方程无实数解\n");
} else if (delta == 0) {
x1 = x2 = -b / (2 * a);
printf("方程有唯一解:x1=x2=%.2f\n", x1);
} else {
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("方程有两个实数解:x1=%.2f, x2=%.2f\n", x1, x2);
}
return 0;
}
```
由键盘输入一个一元二次方程,a*x*x+b*x+c=0(a!=0)的a,b,c的值,求方程的解
以下是Python代码实现:
import math
a = float(input("请输入a的值:"))
b = float(input("请输入b的值:"))
c = float(input("请输入c的值:"))
delta = b*b - 4*a*c
if delta > 0:
x1 = (-b + math.sqrt(delta)) / (2*a)
x2 = (-b - math.sqrt(delta)) / (2*a)
print("方程有两个不相等的实数根:x1 = {0},x2 = {1}".format(x1, x2))
elif delta == 0:
x = -b / (2*a)
print("方程有一个实数根:x = {0}".format(x))
else:
print("方程无实数根。")