将上题用C++
```cpp #include <iostream> #include <iomanip> #include <cmath> int main() { double a, b, c; // 读入 a, b, c 的值 std::cin >> a >> b >> c; // 计算判别式 delta double delta = b * b - 4 * a * c; if (delta > 0) { // 存在两个不同的解 double x1 = (-b + std::sqrt(delta)) / (2 * a); double x2 = (-b - std::sqrt(delta)) / (2 * a); std::cout << std::fixed << std::setprecision(2) << "x1=" << x1 << " x2=" << x2 << std::endl; } else if (delta == 0) { // 存在一个解 double x1 = -b / (2 * a); std::cout << std::fixed << std::setprecision(2) << "x1=" << x1 << std::endl; } else { // 无解 std::cout << "No answer" << std::endl; } return 0; } ``` 代码解释 1. 头文件引入: - `#include <iostream>`:用于输入输出操作。 - `#include <iomanip>`:借助 `std::fixed` 和 `std::setprecision` 来设置输出的小数位数。 - `#include <cmath>`:提供 `std::sqrt` 函数用于计算平方根。 2. 输入读取: - 定义三个 `double` 类型的变量 `a`、`b`、`c` 以存储用户输入。 - 通过 `std::cin` 读取这三个变量的值。 3. 判别式计算: - 按照公式 `delta = b * b - 4 * a * c` 计算判别式的值。 4. 根据判别式结果处理输出: - 若 `delta > 0`,表明方程有两个不同的解,使用求根公式算出 `x1` 和 `x2`,并按格式输出,结果保留两位小数。 - 若 `delta == 0`,说明方程有一个解,使用求根公式算出 `x1` 并输出,同样保留两位小数。 - 若 `delta < 0`,意味着方程无解,输出 `"No answer"`。 复杂度分析 - 时间复杂度:$O(1)$,因为代码中的操作都是常数级别的计算。 - 空间复杂度:$O(1)$,仅使用了常数级的额外空间。 [2025-12-10 12:25:41 | AI问答 | 623点数解答]