【例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 ; }
结论:大部分库函数都很简单,人们都能正确地使用它们。常常发生问题的原因是对库函数里定义的数据类型没有掌握,或者在引用时,自己另外对它们进行了定义,而这些定义又与原定义不符。