10-1 字串與字元處理函數 10-2 時間及日期函數 10-3 數學函數 10-4 亂數函數 10-5 本章綜合練習

Slides:



Advertisements
Similar presentations
大綱 1. 三角函數的導函數. 2. 反三角函數的導函數. 3. 對數函數的導函數. 4. 指數函數的導函數.
Advertisements

◎ 標準函數 標準函數庫中,提供了許多不同功能的函數,而這些函數 的原型宣告以及使用函數相關的定義,依照相關函數的分 類,分別定義在不同的標頭檔之中。 標準函數庫中,提供了許多不同功能的函數,而這些函數 的原型宣告以及使用函數相關的定義,依照相關函數的分 類,分別定義在不同的標頭檔之中。 本來呼叫使用標準函數庫裡的函數,也就是使用模組裡的.
第一單元 建立java 程式.
第4章 VB.NET程式與 網頁製作的應用 主講人: 姚奉緒 M
Introduction to C Programming
計算機程式語言實習課.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
5.1 自然對數函數:微分 5.2 自然對數函數:積分 5.3 反函數 5.4 指數函數:微分與積分 5.5 一般底數的指數函數和應用 5.6 反三角函數:微分 5.7 反三角函數:積分 5.8 雙曲函數.
Chapter 5 遞迴 資料結構導論 - C語言實作.
13 C++字串 字串與數值轉換函數 13.1 C++字串類別 建立C++字串 13-2
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
Visual C++ introduction
2 C++ 程式概論 2.1 C++ 程式結構 程式註解 // 插入標題檔 #include 2-3
列舉(enum).
String C語言-字串.
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
4B冊 認識公倍數和最小公倍數 公倍數和最小公倍數的關係.
Java程式概觀.
銳角三角函數的定義 授課老師:郭威廷.
C語言簡介 日期 : 2018/12/2.
SQL Stored Procedure SQL 預存程序.
C 程式設計— 函式 台大資訊工程學系 資訊系統訓練班.
Methods of Integration 積分的方法
Chapter 7 指標.
(Circular Linked Lists)
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
ACM程序员大赛讲座 _____C语言程序设计要点 讲授人:王敬华.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
程式設計實習課(四) ----C 函數運用----
第一單元 建立java 程式.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
INDEX 資訊學科種子教師研習 課程說明 教學活動計畫.
UpToDate Anywhere 設定方法
第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式
|07 函數.
JAVA 程式設計 資訊管理系 - 網路組.
|08 前置處理器與標準函數.
輸入&輸出 函數 P20~P21.
第九章 字串.
Introduction to C Programming
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
微積分網路教學課程 應用統計學系 周 章.
挑戰C++程式語言 ──第8章 進一步談字元與字串
函式庫補充資料.
認識常數與變數 學習C++所提供的各種基本資料型態 瞭解溢位的發生 學習認識資料型態之間的轉換
C qsort.
挑戰C++程式語言 ──第7章 輸入與輸出.
第二章 三角函數 2-5 三角函數的圖形.
計算機程式設計 老師:蘇炳煌 助教:楊斯竣.
函數應用(二)與自定函數.
亂數 隨機產生亂數 Random類別支援的方法: Next多載方法 Next :傳回亂數。
第七章 資料轉換和 個案選擇 7.1 前言 7.2 〝Recode〞功能 7.3 〝Compute〞功能 7.4 〝Count〞功能
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
1757: Secret Chamber at Mount Rushmore
第三章 指數與對數 3-1 指數 3-2 指數函數及其圖形 3-3 對數 3-4 對數函數及其圖形 3-5 常用對數 回總目次.
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
1 試求下列三角形的面積: 在△ABC中,若 , ,且∠B=45° 在△PQR中,若 , ,且∠R=150° (1) △ABC面積 。
在直角坐標平面上兩點之間 的距離及平面圖形的面積
Programming & Language Telling the computer what to do
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Array(陣列) Anny
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
函式庫補充資料 1.
隨機函數.
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

10-1 字串與字元處理函數 10-2 時間及日期函數 10-3 數學函數 10-4 亂數函數 10-5 本章綜合練習 第10章 C語言的常用函數庫 10-1 字串與字元處理函數 10-2 時間及日期函數 10-3 數學函數 10-4 亂數函數 10-5 本章綜合練習

10-1 字串與字元處理函數 首先要為讀者介紹一些C語言中所提供字串與字元的基本處理方法,包括如何計算字串長度、複製、連接、搜尋、字元判斷等方法,在本節中將分別為您介紹。

字元處理函數 函數原型 說明 int isalpha(int c) 如果c是一個英文字母字元則傳回1(True),否則傳回 0(False)。 int isdigit(int c) 如果c是一個數字字元則傳回1(True),否則傳回 0(False)。 int isspace(int c) 如果c是空白字元則傳回1(True),否則傳回 0(False)。 int isalnum(int c) 如果c是英文字母或數字字元則傳回1(True),否則傳回 0(False)。 int iscntrl(int c) 如果c是控制字元則傳回1(True),否則傳回 0(False)。 int isprint(int c) 如果c是一個可以列印的字元則傳回1(True),否則傳回 0(False)。 int isgraph(int c) 如果c不是空白的可列印字元則傳回1(True),否則傳回 0(False)。 int ispunct(int c) 如果c是空白、英文或數字字元以外的可列印字元則傳回1(True),否則傳 回 0(False) int islower(int c) 如果c是一個小寫的英文字母則傳回1(True),否則傳回 0(False) int isupper(int c) 如果c是一個大寫的英文字母則傳回1(True),否則傳回 0(False)。 int isxdigit(int c) 如果c是一個16進位數字則傳回1(True),否則傳回 0(False) int tolower(int c) 如果c是一個大寫的英文字母則傳回小寫字母,否則直接傳回c int toupper(int c) 如果c是一個小寫的英文字母則傳回大寫字母,否則直接傳回c

字元處理函數的說明與應用:CH10_1 程式範例是利用標頭檔<ctype.h>中的字元處理函數來判斷所輸入的字元是英文字母、數字或其它符號。

字串處理函數表(一) 函數原型 說明 size_t strlen(char *str) 傳回字串 str 的長度。 char *strcpy(char *str1, char *str2) 將str2 字串複製到 str1字串,並傳回 str1 位址。 char *strncpy(char *d, char *s, int n) 複製 str2 字串的前 n 個字元到 str1字 串,並傳回 str1位址。 char *strcat(char *str1, char *str2) 將 str2 字串連結到字串 str1,並傳回 str1位址。 char *strncat(char *str1, char *str2,int n) 連結 str2 字串的前 n 個字元到 str1字 int strcmp(char *str1, char *str2) 比較 str1 字串與 str2 字串。 如果 str1 > str2,傳回正值 str1 == str2,傳回0 str1 < str2,傳回負值

字串處理函數表(二) int strncmp(char *str1, char *str2, int n) 比較 str1 字串與 str2 字串的前 n 個字元。 如果 str1 > str2,傳回正值 str1 == str2,傳回0 str1 < str2,傳回負值 char *strchr(char *str, char c) 搜尋字元 c 在 str 字串中第一次出現的位置,如果有找到則傳回該位置的位址,沒有找到則傳回 NULL。 char *strrchr(char *str, char c) 搜尋字元 c 在 str 字串中最後一次出現的位置,如果有找到則傳回該位置的位址,沒有找到則傳回 NULL。 char *strstr(char *str1, char *str2) 搜尋str2 字串在 str1 字串中第一次出現的位置,如果有找到則傳回該位置的位址,沒有找到則傳回 NULL。

字串處理函數的實作與應用:CH10_2 程式範例是利用標頭檔<string.h>中的各種字串處理函數來判斷所輸入字串大小,並列印比較結果。

字串轉換函數 在<stdlib.h>標頭檔中,也提供了將字串轉為數字資料型態的函數。 使用這些函數的條件,必需是由數字字元所組成的字串,如果輸入字串不是由數字字元組成,則輸出結果將會是數字型態的0。 函數原型 說明 double atof(const char *str) 把字串 str 轉為倍精準浮點數(double float)數值。 int atoi(const char *str) 把字串 str 轉為整數(int)數值。 long atol(const char *str) 把字串 str 轉為長整數(long int)數值。

字串轉換函數的說明與應用:CH10_3 程式範例是利用標頭檔<stdlib.h>中的字串轉換函數來將一個字串轉為倍精度浮點數,並求其立方值。

時間及日期函數 C語言中也所提供了與時間日期相關的函數,定義於time.h標頭檔中,包含了顯示與設定系統目前的時間、程式處理時間函數、計算時間差等等。

時間及日期函數簡介 函數原型 說明 time_t time(time_t *systime); 傳回系統目前的時間,而time_t為time.h中所定義的時間資料型態, 是以長整數型態表示。time()會回應從1970年1月1日 00:00:00 到目前 時間所經過的秒數。如果沒有指定time_t型態,就使用NULL,表示 傳回系統時間。不過如果想這個長整數轉換為時間格式,必須利用 其它的轉換函數。 char *ctime(const time_t *systime); 將t_time長整數轉換為字串,以我們可了解的時間型式表現。 struct tm *localtime(const time_t *timer); 取得當地時間,並傳回tm結構,而tm為time.h中所定義的結構型態, 包含年、月、日等資訊。 char* asctime(const struct tm *tblock); 傳入tm結構指標,將結構成員以我們可了解的時間型式呈現。 struct tm *gmtime(const time_t *timer); 取得格林威治時間,並傳回tm結構。 clock_t clock(void); 取得程式從開始執行到此函數,所經過的時脈數。clock_t型態定義 於time.h中,為一長整數,另外也定義了CLK_TCK來表示每秒的滴 答數,所以經過秒數必須將clock()函數值/CLK_TCK。 double difftime(time_t t2,time_t t1) 傳回t2與t1的時間差距,單位為秒。

time()函數、localtime()函數的說明與應用:CH10_4 程式範例將分別利用time()函數、localtime()函式來取得目前系統時間,並透過ctime()與asctime()函數轉換為日常通用的時間格式。

clock()與difftime()函數的說明與應用:CH10_5

數學函數 數學函數定義在<math.h>表頭檔裡,包括有三角函數、雙曲線函數、指數與對數函數和一些數學計算上的基本函數。

三角函數與雙曲線函數 函數原型 說明 double sin(double 徑度); 徑度(radian)=角度*π/180,而回傳值則為正弦值。 double cos(double 徑度); 傳遞的參數為徑度,而回傳值則為餘弦值。 double tan(double 徑度); 傳遞的參數為徑度,而回傳值則為正切值。 double asin(double 正弦值); 傳遞的參數為必須介於-1~1,而回傳值則為反正弦值。 double acos(double 餘弦值); 傳遞的參數為必須介於-1~1,而回傳值則為反餘弦值。 double atan(double 正切值) 回傳值為反正切值。 double sinh(double 徑度); 徑度(radian)=角度*π/180,而回傳值則為雙曲線的正弦值。 double cosh(double 徑度); 傳遞的參數為徑度,而回傳值則為雙曲線的餘弦值。 double tanh(double 徑度); 傳遞的參數為徑度,而回傳值則為雙曲線的正切值。

三角函數與雙曲線函數的輸出說明與應用:CH10_6 程式範例則是輸入角度,並將角度轉換成徑度,並求出三角函數與雙曲線函數的輸出。

指數與對數函數 函數原型 說明 double exp(double x); 傳遞一個實數為參數,計算後傳回e的次方值。 double log(double x); 傳遞正數(大於零)為參數,計算後傳回該數的 自然對數。 double log10(double x); 傳遞正數為參數,計算後傳回該數以10為底的 double pow(double x,double y); 傳回底數x的y次方,其中當x<0且y不是整數, 或x為0且y<=0時,會發生錯誤。 double sqrt(double x); 傳回x的平方根,x不可小於0。 double fmod(double x,double y); 計算x/y的餘數,其中x,y皆為double型態。

指數與對數函數的說明與應用:CH10_7 程式範例是簡單說明指數與對數函數的輸出功能。

其他數學函數 在這部分的數學函數是關於數值的轉換部分,包括有絕對值,無條件捨去法和無條件進入法的數值相關函數,以下是這些函數的相關說明: 函數原型 說明 double fabs(double number); 傳回number數值的絕對值。 double ceil(double number); 傳回不小於number數值的最小整數,相 當於無條件進入法。 double floor(double number); 傳回不大於number數值的最大整數,相 當於無條件捨去法。

其他數學函數的輸出說明與應用:CH10_8 程式範例是簡單說明絕對值,無條件捨去法和無條件進入法的數值相關函數的輸出功能。

亂數函數 亂數函數定義於<stdlib.h>的表頭檔中,其功能是能隨機產生數字提供程式做應用,像是猜數字遊戲、猜拳遊戲或是其它與機率相關的遊戲程式需要使用到亂數函數。

亂數函數簡介 函數原型 說明 int rand(void); 產生的亂數基本上是介於 0~RAND_MAX之間的整數。 void srand(unsigned seed); 設定亂數種子來初始化rand()的起始 點產生亂數的函數,範圍一樣介於 #define random(num) (rand() % (num)) 為一巨集展開,可以產生0~num之間 的亂數。

rand()函數的使用說明與應用:CH10_9

亂數種子 rand()函數的傳回值是藉由亂數公式所產生,因此每次重新產生亂數的起點都相同,如果可以隨機設定亂數的起點,每次所得到的亂數順序就不會相同。

srand()函數的使用說明與應用:CH10_10

密碼設定程式的說明與示範:CH10_11 程式範例是利用字元處理函數來檢查使用者設定的名稱與密碼是否符合規定,其中使用者名稱可以輸入英文或數字字元,但密碼中則必需含有數字字元。

strstr()字串替換函數:CH10_12 程式範例是利用strstr()函數與strncy()函數,將原始字串中的小字串替換成另一字串。

蒙地卡羅法 「蒙地卡羅法」是使用機率的方式來求解某些數值。例如可以隨意產生亂數座標,座標值介於(0,0)與(1,1)這個正方形區域中,而此時有些座標將會落於1/4圓之中,假設總共產生x個座標值,而其中有y個座標落於1/4圓中,則機率與面積之間的關係將會如下圖所示:

π數值求解程式:CH10_13 由於半徑設定為1,所以1/4圓的面積等於π/4,而正方形面積等於1,所以可以得到以下的公式,請您依照此公式設計程式求出π的數值(請利用本章所提供的函數庫):

樂透開獎程式的實作與練習:CH10_14 設計一樂透開獎程式,總共43顆球,每次開出6個號碼,一個特別號。