Problem Description
解一元二次方程ax
2+bx+c=0的解。保证有解
Input
a,b,c的值。
Output
两个根X
1和X
2,其中X
1>=X
2。 结果保留两位小数。
Example Input
1 5 -2
Example Output
0.37 -5.37
代码:#include <stdio.h>
#include <math.h>
double f(double a,double b,double c)
{
double x;
x=(-b+sqrt(b*b-4*a*c))/(2*a);
return x;
}
double s(double a,double b,double c)
{
double y;
y=(-b-sqrt(b*b-4*a*c))/(2*a);
return y;
}
int main()
{
double a,b,c,x,y;
scanf("%lf%lf%lf",&a,&b,&c);
x=f(a,b,c);
y=s(a,b,c);
if(x>=y)
printf("%.2lf %.2lf\n",x,y);
else
printf("%.2lf %.2lf\n",y,x);
return 0;
}
注意点: y=(-b-sqrt(b*b-4*a*c))/(2*a); 2*a要加括号。!!!!!不要犯这种低级错误。以后凡是遇到这样的计算不管用不用加都加上。
上面的代码定义了两个函数输出。学委教我定义一个函数,直接输出。超简单,值得学习。
代码:
#include <stdio.h>
#include <math.h>
void f(double a,double b,double c)
{
double x;
x=(-b+sqrt(b*b-4*a*c))/(2*a);
double y;
y=(-b-sqrt(b*b-4*a*c))/(2*a);
if(x>=y)
printf("%.2lf %.2lf\n",x,y);
else
printf("%.2lf %.2lf\n",y,x);
}
int main()
{
double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
f(a,b,c);
return 0;
}