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