C语言想得一个输入的数的平方根 但是为什么出现这种情况 而且无法识别负数



#include <stdio.h>
#include <math.h>

int main(void)
{
    double X=0;
    double Y=0;

    Y= sqrt(X); 
    do
    {
        printf("Enter number: ");
        scanf("%f",&X);
        if(X<0)
        {
            printf("Negative number! Enter a new number.");
            continue;
        }
        if(X>0)
        {
            printf("Square root of %d is %f\n",X,Y);
            continue;
        }
    }
    while(X!=0);
    printf("Finished.");
    return 0;
}

img


会出现这两种情况 想输入一个正数 得出平方根并返回 负数输出一句话也返回

double型输入用scanf("%lf",&X)
把第11行放到22行下面,得先输入X,再进行开根号
另外,printf("Square root of %d is %f\n",X,Y)
改为
printf("Square root of %lf is %lf\n",X,Y)

scanf里面换成%lf,%f和float对应,.double类型要用%lf输入和输出,printf里面也对应改为%lf