C语言编程,求一元二次方程 ax2+bx+c=0 的解,谢谢

①系数a=0时,该方程不是二次方程。

②判别式b2-4ac=0时,有两个相等实根。

③判别式b2-4ac>0时,有两个不等实根。

④判别式b2-4ac<0时,有两个共轭复根。

请编程判断其根类型,并求出具体的解的值。(运用结构嵌套来实现)

#include<iostream>

#include<cmath>

using namespace std;

int main()

{

for (int i=0;i<2;i++)

{

double a,b,c,delta,p,q;

cin>>a>>b>>c;

delta=b*b-4*a*c;

p=-b/(2*a);

q=sqrt(fabs(delta))/(2*a);

if (delta>=0)

cout<<p+q<<endl<<p-q<<endl;

else

{

cout<<p<<"+j"<<q;

cout<<endl<<p<<"-j"<<q<<endl;

}

}

return 0;

}

扩展资料:

return表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。

如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。

如果函数名前有返回类型定义,如int,double等就必须有返回值,而如果是void型,则可以不写return,但这时即使写了也无法返回数值。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-08
#include<stdio.h>
#include<math.h>
int main()
{
double a, b, c;
scanf("%lg%lg%lg", &a, &b, &c);
printf("原方程为:%g*x*x + %g*x + %g = 0\n", a, b, c);
if (a == 0)
{
if (b == 0)
{
if (c == 0)
{
printf("\nx可以为任意值");
}
else
{
printf("\nx无解");
}
}
else
{
printf("该方程不是二次方程\nx = %.2f\n", -1.0 * c / b);//一元一次方程
}
}
else
{
int N = b * b - 4 * a * c;
double X = -1.0 * b / 2 / a;
if (N == 0)
{
printf("该方程有2个相等实根\nx1 = %.2f, x2 = %.2f\n", X, X);
}
else if (N > 0)
{
double Y = sqrt(N) / 2.0 / a;
printf("该方程有2个不等实根\nx1 = %.2f, x2 = %.2f\n", X + Y, X - Y);
}
else
{
double Y = sqrt(-1.0 * N) / 2 / a;
printf("该方程有2个共轭复根\nx1 = %.2f+%.2fi, x2 = %.2f-%.2fi\n", X, Y, X, Y);
}
}
return 0;
}

运行示范

本回答被提问者采纳
第2个回答  2018-04-08
C++源程序如下:

#include <iostream>
#include <math.h>
using namespace std;

void main()
{
float a, b, c, x1, x2;

cout << "请输入a, b, c的值:";
cin>> a >> b >> c;

if (b*b - 4*a*c <= 0)
cout << "输入的系数不对,b2-4ac不大于0!程序退出!" << endl;
else
{
x1 = (-b + sqrt(b*b - 4*a*c))/2*a;
x2 = (-b - sqrt(b*b - 4*a*c))/2*a;

cout.precision(2);
cout << "x1 = " << fixed << x1 << endl;
cout << "x2 = " << fixed << x2 << endl;
}

}

C语言源程序如下:

#include <stdio.h>
#include <math.h>

void main()
{
float a, b, c, x1, x2;

printf("请输入a, b, c的值:");
scanf("%f%f%f", &a, &b, &c);

if (b*b - 4*a*c <= 0)
printf("输入的系数不对,b2-4ac不大于0!程序退出!\n");
else
{
x1 = (-b + sqrt(b*b - 4*a*c))/2*a;
x2 = (-b - sqrt(b*b - 4*a*c))/2*a;

printf("x1 = %.2f\n", x1);
printf("x2 = %.2f\n", x2);
}

}本回答被网友采纳
相似回答