c++ 一元二次方程代码实现_详细讲解

发布时间:2024年01月03日

解决一元二次方程的问题,需要直到求解方程的公式:
image.png

#include<iostream>
#include<cmath>
using namespace std;

int main() {
	/*
	解一元二次方程
	ax^2+bx+c=0;
	*/
	//首先,获取系数a,b,c的值
	cout << "请分别输入a、b、c的值:" << endl;
	double a, b, c;//这里数据类型用double,因为系数可能不是整数
	cin >> a >> b >> c;
	double dart = b * b - 4 * a * c;
	if (dart > 0) {
		cout << "方程有两个不同的根,分别是:" << endl;
		cout << "x1=" << ((-b) + sqrt(dart)) / (2 * a) << " " << "x2=" << ((-b) - sqrt(dart)) / (2 * a) << endl;
	}
	else if (dart == 0) {
		cout << "方程有两个相同的根,分别是:" << endl;
		cout << "x1=x2=" << ((-b) + sqrt(dart)) / (2 * a) << endl;
	}
	else {
		cout << "方程无根" << endl;
	}
	return 0;
}

这段代码是一个简单的C++程序,用于求解一元二次方程。以下是代码的逐行解释以及相关的数学知识:

  1. #include<iostream>:包含标准输入输出流库,用于控制台输入和输出。
  2. #include<cmath>:包含数学库,用于数学运算(如平方根)。
  3. using namespace std;:使用标准命名空间,使得后续代码可以直接使用如coutcin等名称,而不需要加std::前缀。
  4. int main() {:程序的主函数,从这里开始执行。
  5. /* ... */:这是多行注释,用于解释代码的功能。
  6. //首先,获取系数a,b,c的值:注释说明接下来要获取一元二次方程的系数a、b、c的值。
  7. cout << "请分别输入a、b、c的值:" << endl;:输出提示用户输入a、b、c的值。
  8. double a, b, c;:声明三个双精度浮点型变量,用于存储a、b、c的值。
  9. cin >> a >> b >> c;:从控制台获取用户输入的a、b、c的值。
  10. double dart = b * b - 4 * a * c;:计算判别式Δ=b^2?4acΔ = b^2 - 4acΔ=b2?4ac。
  11. if (dart > 0) { ... }:如果Δ>0Δ > 0Δ>0,则方程有两个不同的实根。
  12. cout << "x1=" << ((-b) + sqrt(dart)) / (2 * a) << " " << "x2=" << ((-b) - sqrt(dart)) / (2 * a) << endl;:输出两个不同的实根。
  13. else if (dart == 0) { ... }:如果Δ=0Δ = 0Δ=0,则方程有两个相同的实根。
  14. cout << "x1=x2=" << ((-b) + sqrt(dart)) / (2 * a) << endl;:输出一个实根(因为有两个相同的实根)。
  15. else { ... }:如果Δ<0Δ < 0Δ<0,则方程无实根。
  16. cout << "方程无根" << endl;:输出方程无实根的信息。
  17. return 0;:主函数结束,返回0表示程序正常退出。

数学知识点:
这段代码使用了求解一元二次方程的公式。
对于方程ax2+bx+c=0
其解为:

x1,2=(?b±Δ)/2a
其中Δ=b2?4ac是判别式。

根据判别式的值,我们可以知道方程的解的情况:

  • 当Δ>0时,方程有两个不同的实根;
  • 当Δ=0时,方程有两个相同的实根;
  • 当Δ<0时,方程无实根。
文章来源:https://blog.csdn.net/2301_82018821/article/details/135315676
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。