-1

这是我的代码:

#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);
}

代码


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

4

2 回答 2

13

您正在使用 type:int用于所有变量/常量。这意味着您的值被表示为整数。例如static const int PI = 3.14159意味着 3.14159 将被截断为 3。int尝试使用floator代替double

于 2013-09-02T19:36:05.753 回答
2

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

该行中甚至还有一个错字:

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

后面多了一个括号2)。它不会对您的答案产生影响,但是在编译时可能会出错。

于 2013-09-02T23:15:23.803 回答