C计算中的简单程序不正确的区域和周长

时间:2013-09-02 19:30:24

标签: c

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

static const int PI = 3.14159; // Defined global constant for PI
int areaR;
int circumferenceR;
int areaD;
int circumferenceD;

int main(void)
{
#define radius 6
#define diameter 12

    areaR = PI * pow(radius, 2);
    circumferenceR = 2 * PI * radius;

    areaD = PI * pow(diameter, 2)) / 4;
    circumferenceD = PI * diameter;

    puts("Results given a circle of radius 6 and diameter 12:\n");
    printf("areaR is %d\n", areaR);
    printf("circumferenceR is %d\n", circumferenceR);
    printf("areaD is %d\n", areaD);
    printf("circumferenceD is %d\n", circumferenceD);
}

code


这应该输出面积和周长的值,面积等于约113和周长37。除此之外,我的输出显示不正确的值,区域为108,周长为36.我知道这些值是错误的,但只是略低于它们应该是的。这是我在C的第一个程序,我不确定我哪里出错了。

2 个答案:

答案 0 :(得分:13)

您对所有变量/常量使用类型:int。这意味着您的值表示为整数。例如,static const int PI = 3.14159表示3.14159将被截断为3.而不是int,请尝试使用floatdouble

答案 1 :(得分:2)

将int的数据类型设置为变量,使它们只存储整数值并截断小数部分。您的ans不符合预期,因为当您编写static const int PI = 3.14159;时,编译器会将PI初始化为3而不是3.14159,这会对您的ans产生轻微的差异....

甚至还有一个拼写错误:

areaD = PI * pow(diameter, 2)) / 4;

2)之后还有一个额外的括号。它对您的答案没有任何影响,但是,在编译时可能会出错。