printf printing zero when printing a double [dupli

2019-08-23 13:23发布

问题:

This question already has an answer here:

  • Reading in double values with scanf in c 5 answers

I have a piece of code in C, which is supposed to compute the circumference. No matter what I put in for variable Z when asked for it, it always prints 0.000000

Any ideas?

#include <stdio.h>
int main()
{
    double pi = 3.1415926;
    double z = 0.0;
    printf("What is the radius of the circle? \n ");
    scanf("%1f", &z);
    double c =  2.0 * pi * z;
    printf("The circumference is %1f", c);
    return 0;
}

回答1:

Change %1f to %lf.

Like so:

#include <stdio.h>
int main()
{
    double pi = 3.1415926;
    double z = 0.0;
    printf("What is the radius of the circle? \n ");
    scanf("%lf", &z);
    double c =  2.0 * pi * z;
    printf("The circumference is %lf", c);
    return 0;
}


回答2:

For reading into z, a double, you have to use scanf("%lf", &z) instead of "%1f".



回答3:

You were very close. try this

#include <stdio.h>
int main()
{
    double pi = 3.1415926;
    double z = 0.0;
    printf("What is the radius of the circle? \n ");
    scanf("%1f", &z);
    double c =  2.0 * pi * z;
    printf("The circumference is %.1f", c);
    return 0;
} 

your logic is telling the float that it needs a whole number, but no decimals afterwards



标签: c printf