这是我的代码:
#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的第一个程序,我不确定我哪里出错了。
答案 0 :(得分:13)
您对所有变量/常量使用类型:int
。这意味着您的值表示为整数。例如,static const int PI = 3.14159
表示3.14159将被截断为3.而不是int
,请尝试使用float
或double
。
答案 1 :(得分:2)
将int的数据类型设置为变量,使它们只存储整数值并截断小数部分。您的ans不符合预期,因为当您编写static const int PI = 3.14159;
时,编译器会将PI
初始化为3
而不是3.14159
,这会对您的ans产生轻微的差异....
甚至还有一个拼写错误:
areaD = PI * pow(diameter, 2)) / 4;
2)
之后还有一个额外的括号。它对您的答案没有任何影响,但是,在编译时可能会出错。