1 / 33

| 08  前置處理器與標準函數

| 08  前置處理器與標準函數. 8.1 前置處理器. | 前置處理器與相關指令. 8.1.1 關於前置處理器. 前置處理器是程式開始之前的一段區塊,指令 #include 指定含括的標頭檔被引用進來成為程式的一部份。 前置處理器指令除了 #inclde ,還有 #define 指令與條件式編譯 #ifdef 指令。 前置處理器可以讓我們避免重複開發,簡化程式的開發與提升程式碼的使用效率,降低程式維護的難度。. | . #define 指令 >>. 8.1 前置處理器. | #define 指令. 8.1.2 #define.

nau
Download Presentation

| 08  前置處理器與標準函數

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. |08 前置處理器與標準函數

  2. 8.1 前置處理器 |前置處理器與相關指令 8.1.1 關於前置處理器 • 前置處理器是程式開始之前的一段區塊,指令 #include 指定含括的標頭檔被引用進來成為程式的一部份。 • 前置處理器指令除了 #inclde ,還有 #define 指令與條件式編譯 #ifdef 指令。 • 前置處理器可以讓我們避免重複開發,簡化程式的開發與提升程式碼的使用效率,降低程式維護的難度。 |  #define 指令 >>

  3. 8.1 前置處理器 |#define 指令 8.1.2 #define • #define 是一種巨集指令,提供替代指令的功能,在標頭檔預先定義各種程式元素,並以特定識別名稱命名。 • 當程式中要使用到包含常數、字串,甚至一段程式碼的特定內容,可以直接透過定義的名稱進行引用替代原有的內容,簡化程式碼的撰寫工作。 #define dname 程式元素 • dname 是用來取代程式元素的識別名稱。 • 例子:以 PI 的名稱定義以取代難讀的數值 3.14 。 2 1 << 前置處理器與相關指令    範例:定義 PI >>

  4. 8.1 前置處理器 |範例:定義 PI 8.1.2 #define 3.14 10 *10*3.14 半徑 10 的圓形面積等於 314.00 2 1 << #define 指令    範例:定義函數內容 >>

  5. 8.1 前置處理器 |範例:定義函數內容 8.1.2 #define Tim Hello, Tim 歡迎學習 C 語言 3 2 1 << 範例:定義 PI  範例:定義內建符號 >>

  6. 8.1 前置處理器 |範例:定義內建符號 8.1.2 #define 2 1 << 範例:定義函數內容    範例:#define 指令的定義衝突 >>

  7. 8.1 前置處理器 |範例:#define 指令的定義衝突 8.1.3 #define 的問題 << 範例:定義內建符號    範例:#define 指令的錯誤 >>

  8. 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 指令的定義衝突    標頭檔編譯行為 >>

  9. 8.1 前置處理器 |標頭檔編譯行為 8.1.4 #include << 範例:#define 指令的錯誤   stdio.h >>

  10. 8.1 前置處理器 |stdio.h 8.1.4 #include C:\Dev-Cpp\include << 標頭檔編譯行為    範例:自訂標頭檔 >>

  11. 8.1 前置處理器 |範例:自訂標頭檔 8.1.4 #include << stdio.h  範例:含括自訂標頭檔 >>

  12. 8.1 前置處理器 |範例:含括自訂標頭檔 8.1.4 #include 10*10*3.14 4 3 2 1 << 範例:自訂標頭檔   #include 指令特性 >>

  13. 8.1 使用標準函數庫-數學函數 |#include 指令特性 8.2.1 數學函數與 math.h • 適合自訂標頭檔 #include "headerh.h" • 直接至系統資料夾裏面尋找 #include <stdio.h> • 將 headerh.h 配置於 C 根目錄底 #include "C:\headerh.h" << 範例:含括自訂標頭檔    範例:使用 math.h >>

  14. 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 指令特性    指數與對數函數 >>

  15. 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  範例:指數對數 >>

  16. 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 << 指數與對數函數    次方運算函數 >>

  17. 8.2 使用標準函數庫-數學函數 |次方運算函數 8.2.3 次方與開根號 • 計算 x 的 y 次方值 double pow(double x,double y) • 計算 x 的平方根 double sqrt(double x) << 範例:指數對數    範例:次方運算 >>

  18. 8.2 使用標準函數庫-數學函數 |範例:次方運算 8.2.3 次方與開根號 4 的 3 次方運算 4 輸入次方運算的值(x,y): 4 的 3 次方: 64 4,3 3 2 1 << 次方運算函數    範例:平方根運算 >>

  19. 8.2 使用標準函數庫-數學函數 |範例:平方根運算 8.2.3 次方與開根號 4 輸入平方根運算的值: 100 3 2 100.00 的平方根:10.00 1 << 次方運算    近似值函數 >>

  20. 8.2 使用標準函數庫-數學函數 |近似值函數 8.2.4 取得近似整數 double floor(double x) double ceil(double x) • floor() 或是 ceil() 取得參數近似值然後回傳。 • floor() 回傳小於或等於 x 的最大整數。 • ceil() 回傳大於或等於 x 的最小整數。 << 範例:半方根運算    取近似值 >>

  21. 8.2 使用標準函數庫-數學函數 |範例:取近似值 8.2.4 取得近似整數 6 5 4 100.234 輸入欲取近似值的數值: floor(100.23):100.00 ceil(100.23):101.00 3 2 1 << 近似值函數    亂數函數 >>

  22. 8.2 使用標準函數庫-數學函數 |亂數函數 8.2.5 亂數 int rand() • 會回傳一個整數亂數,這個亂數介於 0 ~ 32767 。 • RAND_MAX 可以取得最大可能的亂數值。 • 產生可預期的虛擬亂數 void srand(unsigned int seed) • seed 為亂數種子,這是一個無號整數。 • rand() 就會根據此亂數種子產生不同的亂數值出來。 2 1 << 範例:取近似值    範例:取亂數 >>

  23. 8.2 使用標準函數庫-數學函數 |範例:取亂數 8.2.5 亂數 4 輸出 6 個 0 ~ 32767 的亂數值: 41, 3 15724, 18467, 6334, 26500, 19169, 2 1 << 亂數函數    範例:取亂數 >>

  24. 8.2 使用標準函數庫-數學函數 |範例:取亂數 8.2.5 亂數 指定亂數種子: 2167 652 5 4 3 2 1 << 範例:取亂數    範例:取得特定範圍的亂數 >>

  25. 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() 的定義 >>

  26. 8.3 使用標準函數庫-時間與日期函數 |time() 的定義 8.3.1 取得目前的系統時間 time_t time(time_t *timer) • 回傳目前的系統時間 。 • time_t 型態是 long 型態的整數,表示格林威治時間 1970 年 1 月 1 日 00:00:00 到目前系統時間所經過的時間差,以秒為單位。 << 範例:取得特定範圍的亂數    範例:取得目前時間 >>

  27. 8.3 使用標準函數庫-時間與日期函數 |範例:取得目前時間 8.3.1 取得目前的系統時間 目前時間:1264053485 << time() 的定義    轉換時間函數 – ctime() >>

  28. 8.3 使用標準函數庫-時間與日期函數 |轉換時間函數- ctime() 8.3.1 取得目前的系統時間 char *ctime(const time_t *timer) time_t 型態的常數指標參數轉換成為字串 << 範例:取得目前時間    範例:取得目前時間表示字串 >>

  29. 8.3 使用標準函數庫-時間與日期函數 |範例:取得目前時間表示字串 8.3.1 取得目前的系統時間 目前時間:Thu Jan 21 14:46:26 2010 2 1 << 轉換時間函數 – ctime() clock() 函數 >>

  30. 8.3 使用標準函數庫-時間與日期函數 |clock() 函數 8.3.2 取得程式執行時間 clock_t clock(void) • clock_t 值以 CLK_TCK 為單位。 • 常值表示經過一秒鐘長度時間需要的值。 • 將 clock_t 除以 CLK_TCK 可以得到經過的時間秒數。 << 範例:取得目前時間表示字串    範例:取得程式執行時間 >>

  31. 8.3 使用標準函數庫-時間與日期函數 |範例:取得程式執行時間 8.3.2 取得程式執行時間 請輸入名稱: Hello,Tim Tim 6 5 4 3 等待使用者輸入的時間:5.00 秒 2 1 << clock() 函數    計算時間差函數 – difftime() >>

  32. 8.3 使用標準函數庫-時間與日期函數 |計算時間差函數-difftime() 8.3.2 取得程式執行時間 double difftime( time_t time1, time_t time0); • time0 為開始的時間。 • time1 為結束的時間。 • 回傳值以秒數為單位的 double 型態。 << 範例:取得程式執行時間    範例:計算時間差 >>

  33. 8.3 使用標準函數庫-時間與日期函數 |範例:計算時間差 8.3.2 取得程式執行時間 1 2 3 4 5 6 7 8 9 10 經過 10 秒 << 計算時間差函數 – difftime()  範例:計算時間差 >>

More Related