Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中计算不正确面积和周长的简单程序_C - Fatal编程技术网

C语言中计算不正确面积和周长的简单程序

C语言中计算不正确面积和周长的简单程序,c,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 #def

这是我的密码:

#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);
}
#包括
#包括
#包括
静态常数int PI=3.14159;//PI的定义全局常数
国际区域;
整数周长;
国际区域;
整数周长;
内部主(空)
{
#定义半径6
#定义直径12
面积=π*功率(半径,2);
周长=2*PI*半径;
面积d=PI*pow(直径,2))/4;
周长=圆周率*直径;
puts(“给定半径为6、直径为12的圆的结果:\n”);
printf(“区域为%d\n”,区域);
printf(“周长是%d\n”,周长);
printf(“areaD是%d\n”,areaD);
printf(“周长为%d\n”,周长);
}



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

您正在使用类型:
int
来表示所有变量/常量。这意味着您的值被表示为整数。例如,
static const int PI=3.14159
意味着3.14159将被截断为3。尝试使用
float
double
而不是
int
,将int的数据类型设置为变量,使它们仅存储整数值并截断小数部分。您的ans不是预期的,因为当您编写
static const int PI=3.14159编译器将
PI
初始化为
3
而不是
3.14159
,这会对您的ans产生轻微的差异

甚至还有一行输入错误:

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

2)
后面有一个额外的括号。这对您的答案没有影响,但在编译时可能会出现错误。

如果您发布代码,请将其作为文本发布(带有标记格式),不要将其作为屏幕截图发布。当局部变量足够时,不要创建全局变量(如
areaR
,等等)。
标题通常定义一个常数
M_PI
,以获得机器π的最佳近似值。
#定义半径和直径的
行可能更好地处理为
双半径=6.0;双直径=12.0但如果更改了数字,则必须修改
put()
消息。但是主要的问题是(1)没有将源代码作为源代码复制到问题中,(2)没有对浮点变量的数据类型使用
double
(或
float
)。该死的好图片,这是你的猫吗?你前世没有编写fortran,是吗?全局变量基本上是不允许的。你不用它们。当你想使用它们时,你会三思而后行。当你仍然受到诱惑时,你会花一天的时间思考这个问题。实际上,您从来都不需要它们,如果完全避免它们,您将节省大量调试时间。不幸的是,仍然有大量的fortran代码是以您的风格编写的,当我不得不看它时,它总是让我想隐藏起来。。。