用c++写一个一元二次方程
时间: 2023-04-06 19:00:41 浏览: 109
好的,以下是用 C 语言写一个一元二次方程的代码:
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c, delta, x1, x2;
printf("请输入一元二次方程的系数:\n");
printf("a = ");
scanf("%f", &a);
printf("b = ");
scanf("%f", &b);
printf("c = ");
scanf("%f", &c);
delta = b * b - 4 * a * c;
if (delta < 0)
{
printf("该方程无实数解。\n");
}
else if (delta == 0)
{
x1 = x2 = -b / (2 * a);
printf("该方程有唯一解:x1 = x2 = %.2f\n", x1);
}
else
{
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("该方程有两个实数解:x1 = %.2f,x2 = %.2f\n", x1, x2);
}
return 0;
}
相关问题
用c++写一个求解一元二次方程的代码 要求函数利用值传参
为了在C++中编写一个函数来求解一元二次方程,你可以按照以下步骤设计:
1. 定义一个名为`calculateRoots`的函数,接受三个参数(a, b, c)代表二次方程ax² + bx + c = 0的系数。
```cpp
#include <iostream>
#include <cmath>
// 函数声明,传递系数求解一元二次方程
double calculateQuadraticRoot(double a, double b, double c);
```
2. 实现`calculateRoots`函数,使用公式(-b ± sqrt(b² - 4ac)) / (2a),其中sqrt表示平方根。
```cpp
double calculateQuadraticRoot(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
return (-b + std::sqrt(discriminant)) / (2 * a), (-b - std::sqrt(discriminant)) / (2 * a);
} else if (discriminant == 0) {
return -b / (2 * a); // 重根
} else { // 复数根
double realPart = -b / (2 * a);
double imaginaryPart = std::sqrt(-discriminant) / (2 * a);
return complex(realPart, imaginaryPart);
}
}
```
注意这里假设引入了一个`complex`类来表示复数,但标准库中没有这个,可能需要自定义或者使用第三方库。
3. 主函数中,可以接收用户输入的系数并调用`calculateRoots`函数。
```cpp
int main() {
double a, b, c;
std::cout << "Enter coefficients a, b, and c: ";
std::cin >> a >> b >> c;
// 值传递给函数
double root1, root2;
std::tie(root1, root2) = calculateQuadraticRoot(a, b, c);
std::cout << "Roots of the quadratic equation are:\n";
std::cout << "Root 1: " << root1 << "\n";
std::cout << "Root 2: " << root2 << "\n";
return 0;
}
```
用c++写一个求解一元二次方程的代码 要求函数利用引用传参
在C++中,你可以按照以下步骤编写一个使用引用参数来求解一元二次方程的代码:
1. **包含头文件**[^2]:
```cpp
#include <iostream> // 用于输入输出
#include <cmath> // 提供数学运算功能,包括sqrt(求平方根)
```
2. **定义全局变量**,存储一元二次方程的系数(a, b, c):
```cpp
double a, b, c; // 假设已知系数
```
3. **创建函数声明**,接受系数作为引用参数:
```cpp
void quadraticSolver(double& a, double& b, double& c); // 函数接收三个系数的引用
```
4. **函数实现** - 解析公式并找到根(可能有复数根):
```cpp
double findRoots(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
double root1 = (- sqrt(discriminant)) / (2 * a);
return std::make_pair(root1, root2);
} else if (discriminant == 0) {
double root = -b / (2 * a);
return std::make_pair(root, root);
} else { // 复数根
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
return std::make_pair(realPart, imaginaryPart);
}
}
void quadraticSolver(double& a, double& b, double& c) {
std::pair<double, double> roots = findRoots(a, b, c);
std::cout << "The roots are: ";
if (roots.first != roots.second) {
std::cout << roots.first << " and " << roots.second << std::endl;
} else {
std::cout << roots.first << " (repeated)" << std::endl;
}
}
```
5. **主函数** 中调用`quadraticSolver`函数:
```cpp
int main() {
// 用户输入或初始化系数
// a, b, c = ...;
quadraticSolver(a, b, c); // 调用函数
return 0;
}
```
阅读全文