|
6.7
內建的標準函式庫
所有支援ANSI標準的C/C++編譯器都會提供一組公用的函式庫(function
library),這些函是被稱為內建的(build-in)函式,因為它們是搭配編譯器一起,使用者只要經由函式呼叫,不需宣告或定義它們就可以使用。
C/C++標準的數學函式庫提供許多科學與工程運算基本的數學運算功能,可以節省程式設計者花費在計算細節設計的時間。例如使用者若要計算一個角度的tan-1
值,他只要將角度值傳入一個atan()函式,即可接收函式傳回的計算結果,而不需親自設計tan-1
的計算過程。C/C++中類似計算tan-1功能的數學函式還有很多,它們被放在<math.h>檔案中,所以使用這些數學函式前必須先在檔頭引入<math.h>,我們將標準函式庫的數學函式整理在表5.1。
表5.1.
C/C++的數學函式庫
函式名稱
|
用法
|
ceil(f)
|
浮點數f轉為整數,其傳回的整數值大於或等於f。。例如f=5.4,則 ceil(5.4)傳回6;若f=-2.3, ceil(-2.3) 傳回 -2。
|
cos(f)
|
計算f的餘弦值(cosine),f的單位是徑度(radians)。例: cos(0.0)傳回1, cos(3.1415926)傳回-1。
|
exp(f)
|
計算f的指數(Exponential),即ef 。例 exp(0.0) 傳回1, exp(1.0) 傳回2.718(e)。
|
fabs(f)
|
傳入一個浮點數f,傳回其絕對值。例: fabs(-1.0) 傳回1, fabs(0.0) 傳回0, fabs(1.0) 傳回1。
|
floor(f)
|
浮點數f轉為整數,其傳回的整數值小於或等於f。
例如 : floor(3.3) 傳回3, floor(-3.3) 傳回-4; 這個函式與ceil()相對應,但ceil()傳回的整數值是大於或等於f.
|
fmod (f, g)
|
計算f除以g的餘數。例fmod (10,3)傳回1。
|
log (f)
|
計算f以e為底的自然對數(Natural logarithm)值。例: log(1.0) 傳回0.0, log(2.718) 傳回1.0。
|
log10 (f)
|
計算f以10為底的對數值。例: log10 (1.0) 傳回0.0, log10(10.0) 傳回1, log10(1000.0) 傳回3,注意到log10 (0.0) 傳回undefined。
|
pow (f, g)
|
計算f的g次方值,即fg 。例pow(2.0, 3.0) 傳回 8.0, pow (3.0, 2.0) 傳回 9.0。
|
sin (f)
|
計算f的正弦值(sine),f的單位是徑度(radians)。例::sin (0.0) 傳回0, sin (3.1415926 / 2.0) 傳回1.
|
sqrt (f)
|
計算f的開根號值。例: sqrt (4.0) 傳回2, sqrt (9.0) 傳回3.0.
|
tan (f)
|
計算f的正切值(tangent),例tan (0.0) 傳回0, tan (3.1415926 / 4.0) 傳回1.
|
acos,
asin,
atan
|
計算f的Arc cosine(cos-1), Arc sine(sin-1), 和Arc tangent(tan-1).
|
acosh, asinh,
atanh
|
計算f的Arc hyperbolic cosine (cosh-1),
Arc hyperbolic sine(sinh-1), 和
Arc hyperbolic tangent(tanh-1)。
|
cosh,
sinh,
tanh
|
計算f的Hyperbolic cosine, sine, 和tangent.
|
另一個重要的函式庫是字元和字串處理的函式庫,由於字元和字串處理是各種類型的應用程式(不只於科學和工程應用程式)共同常用的功能,因此它是所有編譯器必備的內建函式庫。就像數學函式庫的原型宣告被放在<math.h>中,字串函式庫被放在<string.h>中,所以使用這些字串處理函式前必須先在檔頭引入<string.h>。我們將標準函式庫的字串處理函式整理在表6.2。
表6.2 C/C++的字串函式庫
函式名稱
|
說明
|
strcpy
(s1, s2)
|
將字串 s2完整複製給 s1
|
strncpy
(s1, s2, n)
|
將字串 s2複製前n個字元給 s1
|
strcat
(s1, s2)
|
|
strncat
(s1, s2, n)
|
將字串 s2的前n個字元複製貼至s1字串後方
|
strcmp
(s1, s2)
|
比較兩個兩個字串s1和s2是否相同。如果相同,則傳回0,否則傳回其差值。
|
strncmp
(s1, s2, n)
|
比較兩個兩個字串s1和s2的前n個字元是否相同。如果相同,則傳回0,否則傳回其差值。
|
strlen
(s1)
|
傳回字串s1的長度(不函空字串)
|
strlwr
(s1)
|
將字串s1的每一個字元轉為小寫
|
strtod
(s1), strtol(s1)
|
將字串s1轉為整數(int)或常整數(long)的數值資料
|
strupr(s1)
|
將字串s1的每一個字元轉為大寫
|
islower
(c)
|
如果字元c是小寫則傳回true(1),否則傳回false(0)
|
isupper
(c)
|
如果字元c是大寫則傳回true(1),否則傳回false(0)
|
|
|