c++编写一元二次方程求根,结果要求精确到小数点后五位
时间: 2024-10-15 07:24:42 浏览: 35
在C++中,你可以使用数值计算库如`<cmath>`来实现一元二次方程的求根,特别是使用公式`x = [-b ± sqrt(b^2 - 4ac)] / (2a)`,其中a、b和c是二次方程ax² + bx + c = 0的系数。这里的关键在于处理浮点数运算可能出现的精度误差,并对结果四舍五入到小数点后五位。
下面是一个简单的示例:
```cpp
#include <iostream>
#include <cmath>
#include <iomanip>
// 函数用于计算二次方程的解
double quadratic(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
if (discriminant < 0) {
// 如果判别式小于0,说明无实数解,返回复数解
return complex<double>(-b, std::sqrt(-discriminant)) / (2 * a);
} else {
// 实数解
double root1 = (-b + std::sqrt(discriminant)) / (2 * a);
double root2 = (-b - std::sqrt(discriminant)) / (2 * a);
// 四舍五入并返回结果
return std::setprecision(5) << std::fixed << root1;
// 返回两个解之一,或者根据需要同时返回两个
// return {root1, root2};
}
}
int main() {
double a, b, c; // 输入方程系数
std::cout << "请输入一元二次方程的系数 a, b, c: ";
std::cin >> a >> b >> c;
double result = quadratic(a, b, c);
std::cout << "一元二次方程的解是: " << result << std::endl;
return 0;
}
```
阅读全文