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

Posted

技术标签:

【中文标题】编写一个程序,提示用户输入球体的半径并打印其体积 [重复]【英文标题】:Write a program that prompts the user for the radius of a sphere and prints its volume [duplicate] 【发布时间】:2016-10-02 15:52:27 【问题描述】:

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

球体体积公式=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;
    

【问题讨论】:

"原始答案应该是 523.80952"。不,它应该更像523.598776(到小数点后 6 位)。 22/7 对 π 的逼近很差。我建议使用更准确的值。 【参考方案1】:

问题出在一行

 pie = 22 / 7;

这里,除法的两个操作数都是整数常量,这是一个整数除法,结果被分配给float,这不是你想要的。您需要通过说来强制进行浮点除法

pie = ((float)22) / 7;

【讨论】:

如果两个操作数都是整数,我总是得到一个整数值吗? 很好奇,为什么将22 称为 整数文字 而不是 整数常量 @chux 好吧,我不认为integer literal 使用不正确,但按照标准,它是整数常量。还是编辑了。 当然,22.0f / 7.0f 甚至只是22.0f / 7 也应该可以。我个人觉得这比强制浮动更优雅。 @SouravGhosh:我同意。 “字面量”这个词很常见,不仅在 C 语言中。如果像我一样,您使用不同的语言工作,尤其是在其中一种语言中,常量是不同的东西(像circumference 这样的标识符表示像 17 之类的文字,您倾向于使用术语“文字”来表示文字值。【参考方案2】:

你也可以写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。这三个将返回原始答案。

【讨论】:

谢谢,没想到!

以上是关于编写一个程序,提示用户输入球体的半径并打印其体积 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python编程练习

7-52 计算球体积 (10 分)

用C++编程 输入一球半径,求球的体积? (需要编程的详细过程)

计算球体积

HDU 2002 计算球体积

HDU 2002 计算球体积