编写一个程序,提示用户输入球体的半径并打印其体积

时间:2016-10-02 15:52:28

标签: c floating-point division integer-division

我没有得到以下代码的正确答案。谁能调试这段代码? 当我输入radius = 5时,我得到的答案是500.000000,而原始答案应该是523.80952。有人可以解释一下这里有什么问题吗?

球体积公式= 4/3(πxr ^ 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;
    }

2 个答案:

答案 0 :(得分:2)

问题出在

 pie = 22 / 7;

这里,除法的两个操作数都是整数常量,这是一个整数除法,结果被赋值给float,这不是你想要的。你需要强制一个浮点除法

pie = ((float)22) / 7;

答案 1 :(得分:1)

您也可以写pie = 3.14 ;而不是pie = 22 / 7 ;

请记住: (a)两个整数之间的算术运算总是返回一个整数。 (b)两个实数之间的算术运算总是返回一个实数。 (c)整数和实数之间的算术运算返回实数。

因此,pie = 22 / 7将返回500.000000而不是523.80952。 因此,您也可以撰写pie = 22.0 / 7pie = 22 / 7.0pie = 22.0 / 7.0。这三个将返回原始答案。