题目描述
求ax2+bx+c=0方程的实根。a,b,c由键盘输入. 解方程要考虑系数a等于零的情况,且解x1、x2必须是float型。a等于零有两种情况(b==0,b!=0),a不等于零有三种情况(delta>0、==0、<0),先计算得到x1、x2,再printf输出
输入
输入三个数a,b,c
输出
输出方程的实根,如果方程有实根,则输出根;如果方程有2个不等实根,则分2行输出,第一行输出较大根,第二行输出较小根。 其余情况(如无实根等)则输出No
样例输入
1 -3 2
样例输出
2.000000
1.000000
#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c,d;
scanf("%f%f%f",&a,&b,&c);
if(a==0)
{
if(b==0)
printf("No\n");
else
printf("%.6f\n",-c/b);
}
else
{
d=b*b-4*a*c;
if(d>0)
{
printf("%.6f\n%.6f\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
}
if(d==0)
{
printf("%.6f\n",-b/(2*a));
}
if(d<0)
{
printf("No\n");
}
}
return 0;
}