c语言实现求一元二次方程的根
从键盘上任意输入 a,b,c 的值,编程计算并输出一元二次方程 ax2+bx+c=0 的根
当 a=0 时,输出“Not quadratic equation with one unknown!”; 当 a≠0 时,分 b2-4ac>0 ,b2-4ac=0 ,b2-4ac<0 三种情况计算并输出方程的根。当 b2-4ac<0 时,输出“No real roots”,若有两根,按从小到大顺序输出,结果保留3位小数,若只有一个根,则输出一个即可。
注意:浮点数不能和0比较是否相等,本题 |a| <0.000001时视为0
输入
a,b,c
输出
x1,x2
代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c,d,x1,x2;
scanf("%f,%f,%f",&a,&b,&c);
d=b*b-4*a*c;
if((fabs)(a)<0.000001)
{
printf("Not quadratic equation with one unknown!");
}
else
{
if(d<=-0.000001)
{
printf("No real roots");
}
else
{
if(d>=0.000001)
{
x1=(double)((-b+sqrt(d))/(2*a));
x2=(double)((-b-sqrt(d))/(2*a));
if(x1>x2)
{
printf("%.3f,%.3f",x2,x1);
}
else
{
printf("%.3f,%.3f",x1,x2);
}
}
else
{
x1=-b/(2*a);
printf("%.3f",x1);
}
}
}
}
此题难度不大,关键是要注意浮点数和0的比较问题。