用c++写一个求解一元二次方程的代码 要求函数利用地址传参
时间: 2024-09-09 17:02:05 浏览: 48
用c++编写的一元二次方程的解
在C++中,我们可以创建四个独立的函数来完成一元二次方程(ax^2 + bx + c = 0)的求解,其中a、b、c作为参数传递。这里展示一个简单的示例,采用全局变量存储一元二次方程的系数,并利用地址传参:
```cpp
#include <iostream>
#include <cmath>
// 函数声明
double calculateDiscriminant(double a, double b);
double calculateRoots(double a, double b, double discriminant);
// 输入系数函数
void inputCoefficients(double& a, double& b, double& c) {
std::cout << "Enter coefficient a: ";
std::cin >> a;
std::cout << "Enter coefficient b: ";
std::cin >> b;
std::cout << "Enter constant term c: ";
std::cin >> c;
}
// 计算判别式函数
double calculateDiscriminant(double a, double b) {
return b * b - 4 * a * c; // 根据公式Δ = b² - 4ac
}
// 求解根函数
double calculateRoots(double a, double b, double discriminant) {
if (discriminant > 0) {
return (-b + sqrt(discriminant)) / (2 * a), (-b - sqrt(discriminant)) / (2 * a); // 实数根
} else if (discriminant == 0) {
return -b / (2 * a); // 双重根
} else { // 复数根
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
return realPart, realPart + imaginaryPart * I; // 使用复数I表示虚部
}
}
int main() {
double a, b, c;
inputCoefficients(a, b, c);
double discriminant = calculateDiscriminant(a, b);
double roots[2];
// 如果有根,利用指针地址传参计算并输出
if (discriminant != 0) {
roots = calculateRoots(a, b, discriminant);
std::cout << "Real roots are: " << roots[0] << " and " << roots[1] << std::endl;
} else {
std::cout << "No real solutions." << std::endl;
}
return 0;
}
```
阅读全文