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代码是以您的风格编写的,当我不得不看它时,它总是让我想隐藏起来。。。