酷代码 AI
菜单

题目描述 读入 的值, 解一元二次方程 ,也就是求出 的值。 提示:可以用一元二次方程的根的判别式 来求方程的解; 令 如果 , 存在两个不同的解,分别为: , ; 如果 , 存在一个解: ; 如果 , 无解。 输入 读入三个浮点数分别为 . 输出 如果存在两个解,按照下面的格式输出: x1=? x2=? 如果存在一个解,按照下面的格式输出: x1=? 如果不存在解,输出: "No answer" 结果保留两位小数.

问题分析 我们需要解一元二次方程 \( ax^2 + bx + c = 0 \),并根据判别式的值来决定输出格式: 1. 判别式 D > 0:两个不同的实数根,格式为 `x1=? x2=?`。 2. 判别式 D = 0:一个实数根(重根),格式为 `x1=?`。 3. 判别式 D < 0:无实数解,输出 "No answer"。 解决步骤 1. 计算判别式 D:公式为 \( D = b^2 - 4ac \)。 2. 根据 D 的值分类处理: - 如果 D > 0,计算两个根: \[ x_1 = \frac{-b + \sqrt{D}}{2a}, \quad x_2 = \frac{-b - \sqrt{D}}{2a} \] 注意排序以保证较小的根在前(可选)。 - 如果 D == 0,计算唯一根: \[ x_1 = \frac{-b}{2a} \] - 如果 D < 0,直接返回 "No answer"。 3. 格式化输出:所有结果保留两位小数。 边界情况考虑 - 当 a=0 时,这不是严格的二次方程(退化为线性方程),但题目保证输入的是三个浮点数且未说明 a≠0,因此假设 a≠0。如果实际遇到 a=0,需要额外处理,但题目未提及,暂不考虑。 - 浮点数精度问题可能导致看似相等的值不完全相等,但在本题中直接比较即可。 Python代码实现 ```python import math a, b, c = map(float, input().split()) discriminant = b2 - 4 * a * c if discriminant > 0: sqrt_d = math.sqrt(discriminant) x1 = (-b + sqrt_d) / (2 * a) x2 = (-b - sqrt_d) / (2 * a) # Ensure x1 <= x2 for consistency (optional) if x1 > x2: x1, x2 = x2, x1 print(f"x1={x1:.2f} x2={x2:.2f}") elif discriminant == 0: x1 = -b / (2 * a) print(f"x1={x1:.2f}") else: print("No answer") ``` 代码解释 1. 输入处理:读取三个浮点数 `a`, `b`, `c`。 2. 计算判别式:`discriminant = b² - 4ac`。 3. 分支逻辑: - D > 0:计算两个根并按升序排列后输出。 - D = 0:计算唯一根并输出。 - D < 0:输出 "No answer"。 4. 格式化输出:使用 `:.2f` 确保结果保留两位小数。 示例测试 输入1: ``` 1 5 6 ``` 输出1: ``` x1=-2.00 x2=-3.00 ``` 解释:方程 \( x^2 + 5x + 6 = 0 \) 的根为 -2 和 -3。 输入2: ``` 1 -2 1 ``` 输出2: ``` x1=1.00 ``` 解释:方程 \( x^2 - 2x + 1 = 0 \) 有重根 1。 输入3: ``` 1 1 1 ``` 输出3: ``` No answer ``` 解释:方程 \( x^2 + x + 1 = 0 \) 无实数解。 [2025-12-17 12:18:17 | AI问答 | 944点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多