6.求 ax^2+bx+c=0 的根。分别考虑 d=b^2-4ac 大于 0,等于和小于 0 这 3 种情况
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a,b,c,x1,x2;
cout<<"请输入一元二次方程的系数(a,b,c):";
cin>>a>>b>>c;
if(b*b-4*a*c>=0) //判断方程是否有实数解
{
cout<<"************************"<<endl;
cout<<"该方程有实数解"<<endl;
cout<<"************************"<<endl;
x1=(-b+sqrt(b*b-4*a*c))/(2*a); //方程的根
x2=(-b-sqrt(b*b-4*a*c))/(2*a); //方程的根
cout<<"方程的根为"<<x1<<"和"<<x2<<endl;
}
else if(b*b-4*a*c<=0)
cout<<"该方程无实数根"<<endl;
return 0;
}
https://blog.csdn.net/weixin_42226824/article/details/127762866
【以下回答由 GPT 生成】
为了求解一元二次方程 ax^2+bx+c=0
的根,我们可以使用下面的步骤:
a
、b
和 c
,分别表示方程的三个系数。d=b^2-4ac
的值。根据判别式的值,可以分为三种情况进行处理。d
大于0,则方程有两个实数解。我们可以使用以下公式计算两个解:x1 = (-b + sqrt(d)) / (2*a)
和 x2 = (-b - sqrt(d)) / (2*a)
,其中 sqrt()
是求平方根函数。d
等于0,则方程有一个实数解。我们可以使用以下公式计算解:x = -b / (2*a)
。d
小于0,则方程没有实数解,而是有两个复数解。我们无法直接在C语言中计算复数,但可以输出实部和虚部的值。d
的值,进行条件判断来输出不同的解。如果 d
大于0,则输出两个实数解;如果 d
等于0,则输出一个实数解;如果 d
小于0,则输出两个复数解。下面是一个示例代码,演示了如何在C语言中求解一元二次方程的根以及处理判别式的不同情况:
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c, d, x1, x2;
printf("请输入方程的三个系数:\n");
scanf("%f %f %f", &a, &b, &c);
// 计算判别式
d = b * b - 4 * a * c;
if(d > 0) {
// 计算两个实数解
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
printf("方程的两个实数解为:x1 = %.2f,x2 = %.2f\n", x1, x2);
}
else if(d == 0) {
// 计算一个实数解
x1 = -b / (2 * a);
printf("方程的一个实数解为:x = %.2f\n", x1);
}
else {
// 输出两个复数解的实部和虚部
float realPart = -b / (2 * a);
float imaginaryPart = sqrt(-d) / (2 * a);
printf("方程的两个复数解为:x1 = %.2f + %.2fi,x2 = %.2f - %.2fi\n", realPart, imaginaryPart, realPart, imaginaryPart);
}
return 0;
}
这段代码可以接收用户输入的方程系数,然后根据判别式的值输出不同情况下的解。
注意: 为了计算平方根和复数的部分,我们需要包含数学库 math.h
。同时要注意,由于计算机的有限精度,可能会对结果产生一定的误差。
【相关推荐】