Description
求ax2+bx+c=0方程的实根。a,b,c由键盘输入. 解方程要考虑系数a等于零的情况,且解x1、x2必须是float型。a等于零有两种情况(b==0,b!=0),a不等于零有三种情况(delta>0、==0、<0),先计算得到x1、x2,再printf输出
Input
输入三个数a,b,c
Output
输出方程的实根,如果方程有实根,则输出根;如果方程有2个不等实根,则分2行输出,第一行输出较大根,第二行输出较小根。 其余情况(如无实根等)则输出No
Code
#include <stdio.h>
#include <stdlib.h>
int main()
{
float x1,x2,a,b,c,delta;
scanf("%f %f %f",&a,&b,&c);
delta=b*b-4*a*c;
if (a==0)
{
if (b==0) printf("No");
else printf("%f",c/b);
}
else
{
if (delta>0) x1=(sqrt(delta)-b)/(2*a),
x2=-(sqrt(delta)+b)/(2*a),printf("%f\n%f",x1,x2);
else if (delta==0) printf("%f",-b/(2*a));
else if(delta<0) printf("No");
}
return 0;
}
刚刚步入acm,所以写一些增加手感,有更简便的方法希望能在下方告知,谢谢!