用c语言求一元二次方程的根

#include "stdio.h"
#include "math.h"
int p1(double a,double b,double root);
int p2(double a,double b);
int p3(double a,double b,double root);
int main()
{
double a,b,c,root;

scanf("%lf %lf %lf",&a,&b,&c);
root=(double)pow(b,2)-4*a*c;
if(root>0)
    p1(a,b,root);
else if(root=0)
    p2(a,b);
else 
    p3(a,b,root);
    
return 0;

}
int p1(double a,double b,double root)
{
printf("x1=%.3lf x2=%.3lf",-b/(2a)+(double)pow(root,0.5)/(2a),-b/(2a)-(double)pow(root,0.5)/(2a));
}
int p2(double a,double b)
{
printf("x1=%.3lf x2=%.3lf",-b/(2a),-b/(2a));
}
int p3(double a,double b,double root)
{
double s1,s2;
s1=-b/(2a);
s2=(double)pow(-root,0.5)/(2
a);
printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi",s1,s2,s1,s2);
}
能看出我出了什么问题吗,答案有一部分变成了0.000