【例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 ; }
結論:大部分庫函數都很簡單,人們都能正確地使用它們。常常發生問題的原因是對庫函數里定義的數據類型沒有掌握,或者在引用時,自己另外對它們進行了定義,而這些定義又與原定義不符。