Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
解一元二次方程ax2+bx+c=0的解。保证有解
Input
a,b,c的值。
Output
两个根X1和X2,其中X1>=X2。 结果保留两位小数。
Sample Input
1 5 -2
Sample Output
0.37 -5.37
Hint
提示:计算过程中,分母是(2*a)
Source
ZJGSU
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double f(int a,int b,int c)
{
double x = sqrt(b*b-4*a*c);
return ((-b+x)/(2.0*a));
//因为不是竖式,所以一定要考虑运算顺序问题,用小括号括起来;
}
double h(int a,int b,int c)
{
double x = sqrt(b*b-4*a*c);
return ((-b-x)/(2.0*a));
}
int main()
{
int a,b,c;
double x1,x2;
scanf("%d%d%d",&a,&b,&c);
x1 = f(a,b,c);
x2 = h(a,b,c);
if(x1<x2)
/*要判断x1,和x2的大小,因为a的符号是正还是负,
造成f函数和h函数所处的结果大小不确定;*/
{
double t = x1;
x1 = x2 ;
x2 = t;
}
printf("%.2lf %.2lf\n",x1,x2);
return 0;
}