如何在C中编程太阳公式的位置

时间:2012-03-06 19:24:47

标签: c

我有这个数学公式,用于找到太阳的位置d = 23.45p / 180 * sin ( 2p * ( 284 + n ) / 365 )(其中d - 太阳的倾角,p-PI = 3.14159和n天数)

我在C中使用以下编码来查找如果我输入任意数量的'n'我会得到什么答案,但在编译时会出现错误。

守则

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

#define PI=3.1415

main ()
{
       float a,b,c,d,n,answer,PI;
       //const float PI=3.1415;

       printf ("\nEnter today's number (between 1 and 365 days in a year)\n");
       printf ("to locate the sun's position:\n");

       scanf ("%f", &n);

       d = ((23.45*M_PI)/180.00)*sin(2.00*M_PI(284.00+&n)/365.00);

       printf ("\nDeclination = %f\n", d);
}

4 个答案:

答案 0 :(得分:1)

此:

#define PI=3.1415

转过这一行:

float a,b,c,d,n,answer,PI;

进入这个:

float a,b,c,d,n,answer,3.1415;

...很可能是编译错误(或者至少其中一个......)。

答案 1 :(得分:1)

M_PI是一个未定义的变量。这可能导致错误。另外,&amp; n表示n的地址,所以不要写(284.00 +&amp; n)。而只是写(284.00 + n)。确保已包含sin函数的正确头文件。另外,正如另一张海报指出的那样,不要再次定义PI。

答案 2 :(得分:1)

我至少做了编译:

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

#define PI 3.1415
main ()
{
       float a,b,c,d,n,answer; // remove PI here.

       printf ("\nEnter today's number (between 1 and 365 days in a year)\n");
       printf ("to locate the sun's position:\n");

       scanf ("%f", &n);

       d = ((23.45*PI)/180.00)*sin(2.00*PI*(284.00+n)/365.00);

       printf ("\nDeclination = %f\n", d);
}

您可以将PI定义为 #define float var ,但不能同时定义两者。

#define 不需要 = ,这不是作业。

d = ... 不行。

scanf 中,您获取结果变量的地址(即&amp; n ),但只需在calucaltion中使用 n

我不知道结果是否正常,也许你有一些测试数据。 (顺便说一句:今年,2012年,还有一天......)

答案 3 :(得分:0)

你不需要&amp;这里

284.00+&n

你只使用n的值来计算总和,你在scanf中使用&amp; n因为scanf需要更新n的值。

也使用

之类的东西
#define PI 3.1413f

define不需要=。如果您已定义PI,则无需声明

float a,b,c,d,n,answer,PI;

应该是

 float a,b,c,d,n,answer;