请问下面的c代码为什么运行结果一直是0

#include<stdio.h>
#define PI 3.141592654
double Ball(double r);
double Cylinder(double r,double h);
double Cone(double r,double h);

int main()
{
    double r, h;
    int c;

    while (1)
    {
        printf("1-Ball\n");
        printf("2-Cylinder\n");
        printf("3-Cone\n");
        printf("other-Exit\n");
        printf("Please enter your command:\n");
        scanf("%d", &c);
        switch (c)
        {
            case 1:
            {printf("Please enter the radius:\n");
                scanf("%1f", &r);
                double x = Ball(r);
                printf("%1f", x);
                scanf("%d", &c);
                break;}
            case 2:
            {printf("Please enter the radius and the height:\n");
                scanf("%1f%1f", &r, &h);
                printf("%21f", Cylinder(r, h));
                break;}
            case 3:
            {printf("Please enter the radius and the height:\n");
                scanf("%1f%1f", &r, &h);
                printf("%21f", Cone(r, h));
                break;}
            default:
                return 0;
        }
    }
}
double Ball(double r)
    {

       double v=(double)4/3*PI*r*r*r;
        return v;
    }
    double Cylinder(double r,double h)
    {

        double v=PI*r*r*h;
        return v;
    }
    double Cone(double r,double h)
    {
        double v=1.0/3*PI*r*r*h;
        return v;
    }

scanf里面应该是%lf,你代码里的是%1f,所以不行