C语言求解答我这个编程哪里错了

求立方根的解,我输入27 但是答案完全错误,求解答
#include
int main()
{

double a,m,n,x;
printf("请输入一个数字\n");
scanf("%d",&a);
n=0,m=a;
while(1)
{
x=(m+n)/2;
if(a>0)
{
if(x*x*x<=a)
{
n=x;
}
else
m=x;
}
else
{
if(x*x*x<=a)
m=x;
else
n=x;
}
if((fabs(x*x*x-a)<=1e-5))
break;
}
printf("%lf",x);
return 0;
}

输出写错了
scanf("%d",&a);
改为scanf("%lf",&a);

输出写错了, %d是代表整数, %f或%lf才是代表浮点数。