【例8.2】这个程序是求30°的正弦值,分析是否正确。
#include <stdio.h>
#include <math.h>
int main
(
)
{
float x
;
x = sin
( 30.0
);
printf
( "x=%f\n"
, x
);
return 0
;
}
如果程序包含的头文件是对的,下一步就要正确调用它。在使用库函数时,一定要弄清楚怎样才是正确的使用,怎样才能达到预期的目的。
从库函数手册中可知,函数sin的原型在math.h中,函数声明为
double sin
( double arg
)
由此可见,该程序调用方式不对,arg是弧度,返回值是double。
//
正确的程序
#include <stdio.h>
#include <math.h>
int main
(
)
{
double x
;
x = sin
( 30.0/180.0 * 3.14159
);
printf
( "x=%.3f\n"
, x
);
return 0
;
}
运行结果为:
x = 0.500
【例8.3】编写一个调用库函数求10除以3的余数的程序。
#include <stdio.h>
int main
(
)
{
int x
, y
;
float z
;
x = 10
;y = 3
;
z=fmod
(x
, y
);
printf
( "z=%d
\n"
, z
);
return 0
;
}
从库函数手册中可知,函数的定义为:
double fmod
( double x
, double y
);
函数fmod()的原型在math.h中。它是求x/y的余数,返回求出的余数值。
该程序没有包含它的头文件,而且调用方式也不对。尽管给出的两个数是整数,但函数要求的是双精度数。正确的程序应为:
#include <stdio.h>
#include <math.h>
int main
(
)
{
double x
, y
, z
;
x = 10.0
;
y = 3.0
;
z=fmod
(x
, y
);
printf
( "z=%2.1f\n"
, z
);
return 0
;
}
程序输出结果为:
z=1.0
下面是更简单的程序。
#include <stdio.h>
#include <math.h>
int main
(
)
{
printf
( "%2.1f\n"
, fmod
(10.0
, 3.0
)
);
return 0
;
}
结论:大部分库函数都很简单,人们都能正确地使用它们。常常发生问题的原因是对库函数里定义的数据类型没有掌握,或者在引用时,自己另外对它们进行了定义,而这些定义又与原定义不符。