题目描述

编程计算并输出一元二次方程ax^2+bx+c=0的两个实根,其中a、b、c的值由用户从键盘输入,
假设a、b、c的值能保证方程有两个不相等的实根(即b^2-4ac>0)。

输入

输入三个实数,以空格隔开。

输出

输出两个实数,每个数据占7列、小数点后保留两位小数,不足7列右对齐。

样例输入

2 6 1

样例输出

-0.18  -2.82

解题思路:

1.求方程的两个实根,可以用公式法解方程;分别得到x1和x2。

2.​公式法把一元二次方程化成一般形式,然后计算​判别式​△=b²-4ac的值,

当b²-4ac≥0时,把各项系数a, b, c的值代入求根公式x=[-b±(b²-4ac)^(1/2)]/(2a) ,

这里注意公式a,b,c带入式子判别式如果(b²-4ac≥0)就可得到方程的根(注明:俺copy百度找的公式法帮助理解)

#include <stdio.h>  //头文件声明;
#include <math.h> //调用数学运算函数声明;
int main() //程序从main函数开始执行;
{
double a,b,c,x1,x2,x; //定义变量类型;
scanf ("%lf %lf %lf",&a,&b,&c);
x=sqrt(b*b-4*a*c); //这里的x是用来求判别式的那一步;
x1=(-1*b+x)/(2*a); //分别求出两根X1和x2;
x2=(-1*b-x)/(2*a);
printf("%7.2f%7.2f",x1,x2); //最后按照题目要求打印输出两个实根;
return 0; //程序顺利结束。

}