您尚未声明deg_to_rad()
:
extern double deg_to_rad(int deg);
在你使用它之前。您的代码假定它返回 anint
并将其转换为double
.
你应该有一个标题degtorad.h
。
degtorad.h
#ifndef DEGTORAD_H_INCLUDED
#define DEGTORAD_H_INCLUDED
extern double deg_to_rad(int deg);
#endif /* DEGTORAD_H_INCLUDED */
(在此示例中,标头保护不是 100% 必需的,但对于需要标头保护的更复杂情况,这是一个很好的基础。)
然后您的程序文件包含此标头。在某个地方,您也需要声明evaluate_sin()
;它可以进入同一个标题。
评估_sin.c:
#include <math.h>
#include <stdio.h>
#include "degtorad.h"
double evaluate_sin(int deg)
{
double j = deg_to_rad(deg);
j = sin(j);
printf("sin(%d) = %.6f\n", deg, j);
return j;
}
还要注意返回类型的变化(double
而不是int
);它将返回 0,除非您设法传入 π/2 的奇数倍数(当它返回 -1 或 +1 时)。以及值格式的更改double
(%.6f
而不是%d
,它将打印一个整数)。
如果您使用的是 GCC,则需要打开编译警告;至少-Wall
。
deg_to_rad.c
#include "deg_to_rad.h"
double deg_to_rad(int deg)
{
double rad = (3.14 * deg) / 180;
return rad;
}