问题
Im not getting correct answer with the following code below. Can anyone debug this code? When I input radius = 5, the answer I get is 500.000000 whereas the original answer should be 523.80952. Can anyone please explain what's wrong here?
Sphere volume formula =4/3(π x r^3)
#include <stdio.h>
int main()
{
float radius = 0;
float volume;
float pie = 0;
printf("Enter radius");
scanf("%f", &radius);
pie = 22 / 7;
volume = (4*pie*radius*radius*radius)/3;
printf("the volume is %f", volume);
return 0;
}
回答1:
You can also write pie = 3.14 ;
instead of pie = 22 / 7 ;
And keep in mind that: (a) Arithmetic operation between two integers always returns an integer. (b) Arithmetic operation between two real numbers always returns a real number. (c) Arithmetic operation between an integer and a real number returns a real number.
So, pie = 22 / 7
will return 500.000000 instead of 523.80952.
therefore you can also write pie = 22.0 / 7
or pie = 22 / 7.0
or pie = 22.0 / 7.0
. These three will return the original answer.
回答2:
The problem is in the line
pie = 22 / 7;
here, both the operands of the division being integer constants, this is an integer division and the the result get assigned to float
, which is not what you want. You need to force a floating point division by saying
pie = ((float)22) / 7;
来源:https://stackoverflow.com/questions/39818778/write-a-program-that-prompts-the-user-for-the-radius-of-a-sphere-and-prints-its