C++ 求解一元二次方程根:公式实现及三大开发注意点
```cpp #include <iostream> #include <cmath> #include <iomanip> int main() { double a, b, c; // 提示用户输入一元二次方程的系数a, b, c std::cout << "请输入一元二次方程ax^2 + bx + c = 0的系数a, b, c(a不为0):" << std::endl; std::cin >> a >> b >> c; // 计算判别式 double discriminant = b * b - 4 * a * c; // 检查判别式的值 if (discriminant > 0) { // 判别式大于0,方程有两个不同的实根 double x1 = (-b + std::sqrt(discriminant)) / (2 * a); double x2 = (-b - std::sqrt(discriminant)) / (2 * a); // 设置输出精度为小数点后5位 std::cout << std::fixed << std::setprecision(5); std::cout << "方程有两个不同的实根:" << std::endl; std::cout << "x1 = " << x1 << std::endl; std::cout << "x2 = " << x2 << std::endl; } else if (discriminant == 0) { // 判别式等于0,方程有两个相同的实根 double x = -b / (2 * a); std::cout << std::fixed << std::setprecision(5); std::cout << "方程有两个相同的实根:" << std::endl; std::cout << "x1 = x2 = " << x << std::endl; } else { // 判别式小于0,方程没有实根 std::cout << "方程没有实根。" << std::endl; } return 0; } ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 要确保输入的系数`a`不为0,因为`a`为0时方程就不是一元二次方程了。 2. 在计算判别式时,要注意`b * b - 4 * a * c`的结果可能会超出数据类型的表示范围,特别是当系数值很大时。 3. 使用`std::sqrt`函数计算平方根时,要保证传入的参数是非负的,否则会导致未定义行为。 ######[AI写代码神器 | 570点数解答 | 2025-08-12 17:07:05]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)362
- Java 实现计算所需最少钱币张数和个数(字节豆包 | 590点数解答 | 2026-03-05 21:44:59)22
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)333
- Java 实现:从点类到圆类,计算圆心坐标(50,30)、半径 4 的圆周长与面积(字节豆包 | 246点数解答 | 2024-11-11 16:36:30)349
- Java实现Student类:含构造、方法及年龄判定(字节豆包 | 464点数解答 | 2024-11-19 15:55:26)394
- Python 实现多功能手机通讯录:添加、查看、删除、修改、查找全搞定!(字节豆包 | 1030点数解答 | 2025-06-05 15:47:56)256
- C++实现九九乘法表输出及代码详细解释(字节豆包 | 412点数解答 | 2026-02-06 22:10:32)76
- C++ 实现根据输入半径计算圆面积并保留三位小数(字节豆包 | 320点数解答 | 2026-04-11 13:10:38)15
- C++ 实现计算班级学生平均分(字节豆包 | 339点数解答 | 2026-04-11 13:11:49)15
- 拉面师傅面料调配难题:Python 代码揭秘能否满足小朋友要求及最小消耗(字节豆包 | 356点数解答 | 2024-09-28 11:30:31)196
- C++ 实现:判断拉面面料能否满足需求及最小消耗计算(字节豆包 | 441点数解答 | 2024-09-28 11:31:36)182
- Python 程序:精准计算立方体水箱装满水的重量(吨)(字节豆包 | 171点数解答 | 2025-03-17 23:38:44)162