4.1-1二元一次方程的求解(100分)
题目内容:
求一元二次方程ax2+bx+c=0的根。根据提示输入系数a、b、c的值,显示方程的根。注意a为0、b为0、实数根、复数根等不同情况。
·输入格式:
依次输入a、b和c的 值
·输出格式:
两个根之间用一个空格分隔
#include <iostream> // 引入输入输出流库
#include <cmath> // 引入数学库,用于数学函数如sqrt
using namespace std; // 使用标准命名空间
int main(void) {
float a, b, c; // 定义浮点变量a, b, c,用于存储方程的系数和常数项
cin >> a >> b >> c; // 从标准输入读取a, b, c的值
// 检查是否是无解方程(即a和b都为0)
if (a == 0 && b == 0) {
cout << "Not an equation."; // 输出"Not an equation."
} else {
// 如果a为0,说明这是一个一元一次方程
if (a == 0) {
cout << "x=" << -c / b; // 输出方程的解x = -c/b
} else {
// 检查方程的判别式是否非负,判别式为b^2 - 4ac
if (b * b - 4 * a * c >= 0) {
// 方程有实数解
cout << "x1=" << (-b + sqrt(b * b - 4 * a * c)) / (2 * a) << " "; // 输出第一个实数解x1
cout << "x2=" << (-b - sqrt(b * b - 4 * a * c)) / (2 * a); // 输出第二个实数解x2
} else {
// 方程没有实数解,输出复数解
cout << "x1=" << (-b / (2 * a)) << "+" << sqrt(4 * a * c - b * b) / (2 * a) << "i" << " "; // 输出第一个复数解x1
cout << "x2=" << (-b / (2 * a)) << "-" << sqrt(4 * a * c - b * b) / (2 * a) << "i"; // 输出第二个复数解x2
}
}
}
return 0; // 程序正常结束
}
解释
-
变量定义:
float a, b, c;
:定义三个浮点数变量,用于存储方程的系数和常数项。
-
读取输入:
cin >> a >> b >> c;
:从用户输入读取三个浮点数。
-
方程分类与求解:
- 无解情况:
if (a == 0 && b == 0)
:如果a
和b
都是0,则不是一个方程。
- 一元一次方程:
- 无解情况: