回复 2楼 未来大仙
#include<stdio.h>
#include<stdlib.h>
int i=1;
int main(){
double a,b,c;
double t,t1,x1,x2,x3;
while(1){
scanf("%if%lf%lf",&a,&b,&c);
if(a==0) break;
//这里是不是得精度控制?
else {
t=b*b-4*a*c;
t1=sqrt(fabs(b*b-4*a*c));
x1=-t1/(2*a);
x2=+t1/(2*a);
x3=-b/(2*a);
if(t>0)
//这里是不是得精度控制?
printf("Case %d :\nx^%g + %gx + %g = 0\ntwo real roots : %g, %g\n",i,a,b,c,x3+x1,x3+x2);//这里前面用%什么可以输出输入的原数据(比如输2出2不是2.0000000)
if(fabs(t)<=0)
//这里是不是得精度控制?
printf("Case %d :\nx^%g + %gx + %g = 0\nonly one real root : %g\n",i,a,b,c,x1+x1);
if(t<0)
//这里是不是得精度控制?
printf("Case %d :\nx^%g + %gx + %g = 0\ntwo imaginary roots : %g%+gi, %g%+gi\n",i,a,b,c,x5,x3,x5,x4);
}
}
}