使用C语言求一元二次方程的根的程序和注释
发布网友
发布时间:2022-05-13 00:30
我来回答
共1个回答
热心网友
时间:2023-11-02 23:54
错在输入函数的地方scanf("%1f %1f %1f",&a,&b,&c)
不是 1f 而是LF,是小写的l。。。表示双精度
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,disc,x1,x2,realpart,imagpart;
while(scanf("%lf %lf %lf",&a,&b,&c)!=EOF)//输入不为空
{
if(fabs(a)<=1e-6)//a=0,无解
printf("no\n");
else
{
disc=b*b-4*a*c;
if(fabs(disc)<=1e-6) printf("1 %.2f\n",-b/(2*a));//b*b-4*a*c=0,两个相同解
else
if(disc>1e-6)//b*b-4*a*c>0,两个解
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("2 %.2f %.2f\n",x1,x2);
}
else//b*b-4*a*c<0,两个复数解
{
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf("2 %.2f+%.2fi %.2f-%.2fi\n",realpart,imagpart,realpart,imagpart);
}
}
}
return 0;
}追问请问下1e-6是0的意思吗
fabs是代表啥,我都没学过这个