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)$,仅使用了常数级的额外空间。 ######[AI问答 | 623点数解答 | 2025-12-10 12:25:41]
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)236
- C++求解序列或与运算和差值:避O(nq)复杂度及数据处理要点(字节豆包 | 534点数解答 | 2025-10-17 20:05:07)65
- Java 实现计算所需最少钱币张数和个数(字节豆包 | 590点数解答 | 2026-03-05 21:44:59)20
- Java 实现:轻松生成 5 位数字、大小写字母混合验证码( | 266点数解答 | 2024-03-06 17:39:10)336
- 深度剖析:游戏中两个 Buff 效果的触发条件、逻辑及注意要点 (阿里通义 | 566点数解答 | 2024-11-26 14:24:12)262
- 深度剖析 Vue 2 插槽:从基础使用到高级玩法(字节豆包 | 165点数解答 | 2024-11-29 11:25:06)217
- C++实现支持四则运算的简单计算器,处理除数为0和无效操作(字节豆包 | 241点数解答 | 2025-10-29 20:21:29)68
- C语言破解甲乙丙真假话谜题:开发中需留意的三大要点(字节豆包 | 444点数解答 | 2025-11-24 00:10:58)57
- 大学生日常花销记账App开发:测试部署与后端开发工作全揭秘(百度文心 | 612点数解答 | 2024-05-15 18:59:38)354
- JS 代码:轻松定义变量 test 并赋值为“red”( | 6点数解答 | 2024-05-19 20:46:45)388
- JS 代码:轻松定义含“Saab、Volvo、BMW”的数组变量 mycars( | 14点数解答 | 2024-05-19 20:47:47)420
- JS 代码:判断“red”改值为“green”并弹窗显示结果( | 176点数解答 | 2024-05-20 21:33:04)420