330 likes | 507 Views
| 08 前置處理器與標準函數. 8.1 前置處理器. | 前置處理器與相關指令. 8.1.1 關於前置處理器. 前置處理器是程式開始之前的一段區塊,指令 #include 指定含括的標頭檔被引用進來成為程式的一部份。 前置處理器指令除了 #inclde ,還有 #define 指令與條件式編譯 #ifdef 指令。 前置處理器可以讓我們避免重複開發,簡化程式的開發與提升程式碼的使用效率,降低程式維護的難度。. | . #define 指令 >>. 8.1 前置處理器. | #define 指令. 8.1.2 #define.
E N D
8.1 前置處理器 |前置處理器與相關指令 8.1.1 關於前置處理器 • 前置處理器是程式開始之前的一段區塊,指令 #include 指定含括的標頭檔被引用進來成為程式的一部份。 • 前置處理器指令除了 #inclde ,還有 #define 指令與條件式編譯 #ifdef 指令。 • 前置處理器可以讓我們避免重複開發,簡化程式的開發與提升程式碼的使用效率,降低程式維護的難度。 | #define 指令 >>
8.1 前置處理器 |#define 指令 8.1.2 #define • #define 是一種巨集指令,提供替代指令的功能,在標頭檔預先定義各種程式元素,並以特定識別名稱命名。 • 當程式中要使用到包含常數、字串,甚至一段程式碼的特定內容,可以直接透過定義的名稱進行引用替代原有的內容,簡化程式碼的撰寫工作。 #define dname 程式元素 • dname 是用來取代程式元素的識別名稱。 • 例子:以 PI 的名稱定義以取代難讀的數值 3.14 。 2 1 << 前置處理器與相關指令 範例:定義 PI >>
8.1 前置處理器 |範例:定義 PI 8.1.2 #define 3.14 10 *10*3.14 半徑 10 的圓形面積等於 314.00 2 1 << #define 指令 範例:定義函數內容 >>
8.1 前置處理器 |範例:定義函數內容 8.1.2 #define Tim Hello, Tim 歡迎學習 C 語言 3 2 1 << 範例:定義 PI 範例:定義內建符號 >>
8.1 前置處理器 |範例:定義內建符號 8.1.2 #define 2 1 << 範例:定義函數內容 範例:#define 指令的定義衝突 >>
8.1 前置處理器 |範例:#define 指令的定義衝突 8.1.3 #define 的問題 << 範例:定義內建符號 範例:#define 指令的錯誤 >>
8.1 前置處理器 |範例:#define 指令的錯誤 8.1.3 #define 的問題 =>1+2+2=>5 * * =>2*4=>8 2+2 1+1 (2+2) (1+1) doma(a,b):5 domb(a,b):8 5 4 3 2 1 << 範例:#define 指令的定義衝突 標頭檔編譯行為 >>
8.1 前置處理器 |標頭檔編譯行為 8.1.4 #include << 範例:#define 指令的錯誤 stdio.h >>
8.1 前置處理器 |stdio.h 8.1.4 #include C:\Dev-Cpp\include << 標頭檔編譯行為 範例:自訂標頭檔 >>
8.1 前置處理器 |範例:自訂標頭檔 8.1.4 #include << stdio.h 範例:含括自訂標頭檔 >>
8.1 前置處理器 |範例:含括自訂標頭檔 8.1.4 #include 10*10*3.14 4 3 2 1 << 範例:自訂標頭檔 #include 指令特性 >>
8.1 使用標準函數庫-數學函數 |#include 指令特性 8.2.1 數學函數與 math.h • 適合自訂標頭檔 #include "headerh.h" • 直接至系統資料夾裏面尋找 #include <stdio.h> • 將 headerh.h 配置於 C 根目錄底 #include "C:\headerh.h" << 範例:含括自訂標頭檔 範例:使用 math.h >>
3.1 使用標準函數庫-數學函數 |範例:使用 math.h 8.2.1 數學函數與 math.h 20 請輸入要計算的角度: (3.14…/180)*20 呼叫 math.h 的函數 sin 30:0.50 cos 30:0.87 tan 30:0.58 5 4 3 2 1 << #include 指令特性 指數與對數函數 >>
8.2 使用標準函數庫-數學函數 |指數與對數函數 8.2.2 指數與對數函數 double exp(double x) double log(double x) double log10(double x) • exp() 計算指數值,將所要計算的值 x 傳入,取得 ex 的計算結果。 • log() 計算自然對數,將所要計算的值 x 傳入,取得 log(x) 的計算結果。 • log10() 計算以 10 為底的對數值,將所要計算的值 x 傳入,取得 log10(x)的計算結果。 << 範例:使用 math.h 範例:指數對數 >>
8.2 使用標準函數庫-數學函數 |範例:指數對數 8.2.2 指數與對數函數 指定計算指數對數的值: exp(10.00):22026.47 log(10.00):2.30 log10(10.00):1.00 10 8 7 6 5 4 3 2 1 << 指數與對數函數 次方運算函數 >>
8.2 使用標準函數庫-數學函數 |次方運算函數 8.2.3 次方與開根號 • 計算 x 的 y 次方值 double pow(double x,double y) • 計算 x 的平方根 double sqrt(double x) << 範例:指數對數 範例:次方運算 >>
8.2 使用標準函數庫-數學函數 |範例:次方運算 8.2.3 次方與開根號 4 的 3 次方運算 4 輸入次方運算的值(x,y): 4 的 3 次方: 64 4,3 3 2 1 << 次方運算函數 範例:平方根運算 >>
8.2 使用標準函數庫-數學函數 |範例:平方根運算 8.2.3 次方與開根號 4 輸入平方根運算的值: 100 3 2 100.00 的平方根:10.00 1 << 次方運算 近似值函數 >>
8.2 使用標準函數庫-數學函數 |近似值函數 8.2.4 取得近似整數 double floor(double x) double ceil(double x) • floor() 或是 ceil() 取得參數近似值然後回傳。 • floor() 回傳小於或等於 x 的最大整數。 • ceil() 回傳大於或等於 x 的最小整數。 << 範例:半方根運算 取近似值 >>
8.2 使用標準函數庫-數學函數 |範例:取近似值 8.2.4 取得近似整數 6 5 4 100.234 輸入欲取近似值的數值: floor(100.23):100.00 ceil(100.23):101.00 3 2 1 << 近似值函數 亂數函數 >>
8.2 使用標準函數庫-數學函數 |亂數函數 8.2.5 亂數 int rand() • 會回傳一個整數亂數,這個亂數介於 0 ~ 32767 。 • RAND_MAX 可以取得最大可能的亂數值。 • 產生可預期的虛擬亂數 void srand(unsigned int seed) • seed 為亂數種子,這是一個無號整數。 • rand() 就會根據此亂數種子產生不同的亂數值出來。 2 1 << 範例:取近似值 範例:取亂數 >>
8.2 使用標準函數庫-數學函數 |範例:取亂數 8.2.5 亂數 4 輸出 6 個 0 ~ 32767 的亂數值: 41, 3 15724, 18467, 6334, 26500, 19169, 2 1 << 亂數函數 範例:取亂數 >>
8.2 使用標準函數庫-數學函數 |範例:取亂數 8.2.5 亂數 指定亂數種子: 2167 652 5 4 3 2 1 << 範例:取亂數 範例:取得特定範圍的亂數 >>
8.2 使用標準函數庫-數學函數 |範例:取得特定範圍的亂數 8.2.5 亂數 12 11 10 9 8 7 6 5 4 3 輸入所要產生的最大亂數 : 41,53,64,34,29,16,60,54,34,44 66 2 1 << 範例:取亂數 time() 的定義 >>
8.3 使用標準函數庫-時間與日期函數 |time() 的定義 8.3.1 取得目前的系統時間 time_t time(time_t *timer) • 回傳目前的系統時間 。 • time_t 型態是 long 型態的整數,表示格林威治時間 1970 年 1 月 1 日 00:00:00 到目前系統時間所經過的時間差,以秒為單位。 << 範例:取得特定範圍的亂數 範例:取得目前時間 >>
8.3 使用標準函數庫-時間與日期函數 |範例:取得目前時間 8.3.1 取得目前的系統時間 目前時間:1264053485 << time() 的定義 轉換時間函數 – ctime() >>
8.3 使用標準函數庫-時間與日期函數 |轉換時間函數- ctime() 8.3.1 取得目前的系統時間 char *ctime(const time_t *timer) time_t 型態的常數指標參數轉換成為字串 << 範例:取得目前時間 範例:取得目前時間表示字串 >>
8.3 使用標準函數庫-時間與日期函數 |範例:取得目前時間表示字串 8.3.1 取得目前的系統時間 目前時間:Thu Jan 21 14:46:26 2010 2 1 << 轉換時間函數 – ctime() clock() 函數 >>
8.3 使用標準函數庫-時間與日期函數 |clock() 函數 8.3.2 取得程式執行時間 clock_t clock(void) • clock_t 值以 CLK_TCK 為單位。 • 常值表示經過一秒鐘長度時間需要的值。 • 將 clock_t 除以 CLK_TCK 可以得到經過的時間秒數。 << 範例:取得目前時間表示字串 範例:取得程式執行時間 >>
8.3 使用標準函數庫-時間與日期函數 |範例:取得程式執行時間 8.3.2 取得程式執行時間 請輸入名稱: Hello,Tim Tim 6 5 4 3 等待使用者輸入的時間:5.00 秒 2 1 << clock() 函數 計算時間差函數 – difftime() >>
8.3 使用標準函數庫-時間與日期函數 |計算時間差函數-difftime() 8.3.2 取得程式執行時間 double difftime( time_t time1, time_t time0); • time0 為開始的時間。 • time1 為結束的時間。 • 回傳值以秒數為單位的 double 型態。 << 範例:取得程式執行時間 範例:計算時間差 >>
8.3 使用標準函數庫-時間與日期函數 |範例:計算時間差 8.3.2 取得程式執行時間 1 2 3 4 5 6 7 8 9 10 經過 10 秒 << 計算時間差函數 – difftime() 範例:計算時間差 >>