解决一元二次方程的问题,需要直到求解方程的公式:
#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++程序,用于求解一元二次方程。以下是代码的逐行解释以及相关的数学知识:
#include<iostream>
:包含标准输入输出流库,用于控制台输入和输出。#include<cmath>
:包含数学库,用于数学运算(如平方根)。using namespace std;
:使用标准命名空间,使得后续代码可以直接使用如cout
和cin
等名称,而不需要加std::
前缀。int main() {
:程序的主函数,从这里开始执行。/* ... */
:这是多行注释,用于解释代码的功能。//首先,获取系数a,b,c的值
:注释说明接下来要获取一元二次方程的系数a、b、c的值。cout << "请分别输入a、b、c的值:" << endl;
:输出提示用户输入a、b、c的值。double a, b, c;
:声明三个双精度浮点型变量,用于存储a、b、c的值。cin >> a >> b >> c;
:从控制台获取用户输入的a、b、c的值。double dart = b * b - 4 * a * c;
:计算判别式Δ=b^2?4acΔ = b^2 - 4acΔ=b2?4ac。if (dart > 0) { ... }
:如果Δ>0Δ > 0Δ>0,则方程有两个不同的实根。cout << "x1=" << ((-b) + sqrt(dart)) / (2 * a) << " " << "x2=" << ((-b) - sqrt(dart)) / (2 * a) << endl;
:输出两个不同的实根。else if (dart == 0) { ... }
:如果Δ=0Δ = 0Δ=0,则方程有两个相同的实根。cout << "x1=x2=" << ((-b) + sqrt(dart)) / (2 * a) << endl;
:输出一个实根(因为有两个相同的实根)。else { ... }
:如果Δ<0Δ < 0Δ<0,则方程无实根。cout << "方程无根" << endl;
:输出方程无实根的信息。return 0;
:主函数结束,返回0表示程序正常退出。数学知识点:
这段代码使用了求解一元二次方程的公式。
对于方程ax2+bx+c=0
其解为:
x1,2=(?b±Δ)/2a
其中Δ=b2?4ac是判别式。
根据判别式的值,我们可以知道方程的解的情况: