1 / 29

補充教材

補充教材. 字串與字元操作. 計算字串長度. int strlen(char s[]) { int length = 0; for (int i=0; s[i] != ‘’; i++) length++; return length; }. 請設計以下副函式 int strlen(char s[]); 計算字串 s 中的長度。. 判斷字串是否為數字. bool isDigit(char s[]) {

lorie
Download Presentation

補充教材

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. 補充教材

  2. 字串與字元操作

  3. 計算字串長度 int strlen(char s[]) { int length = 0; for (int i=0; s[i] != ‘\0’; i++) length++; return length; } • 請設計以下副函式 int strlen(char s[]); • 計算字串s中的長度。

  4. 判斷字串是否為數字 bool isDigit(char s[]) { for (int i=0; s[i] != ‘\0’; i++) if (s[i] < ‘0’ || s[i] > ‘9’) return false; return true; } • 請設計以下副函式 bool isDigit(char s[]); • 如果s為數字,則回傳true;否則,則回傳false。

  5. 將字串轉換成大寫 void toUpper(char s[]) { for (int i=0; s[i] != ‘\0’; i++) if (s[i] >= ‘a’ && s[i] <= ‘z’) s[i] = ‘A’ + s[i] – ‘a’; } • 請設計以下副函式 void toUpper(char s[]); • 將s中的小寫字母轉換成大寫。

  6. 比較兩字串 (1) • 字串比較原則 • 兩個字串的字元一個一個做相減,回傳第一個非零的結果。 • 範例 • Example 1 • “abc” < “abd” • 前面的字元互相相減都為零,一直到比較「c」和「d」時,才得到一個非零的結果(d比c大),故使得”abc”<“abd”。 • Example 2 • “abc” < “abcc” • 前面三個字元互相相減都為零,「abc」已經沒有字元可比,故「abcc」比較大。

  7. 比較兩字串 (2) • 請設計以下副函式 int strcmp(char s1[], char s2[]); • 比較兩字串s1與s2 • 如果s1>s2,則回傳值大於0(s1-s2>0); • 如果s1<s2,則回傳值小於0(s1-s2<0); • 如果s1=s2,則回傳值等於0(s1-s2=0)。

  8. 比較兩字串 (3) int strcmp(char s1[], char s2[]) { int i = 0; for (i=0; s1[i] != ‘\0’ && s2[i] != ‘\0’; i++) if (s1[i] != s2[i]) return s1[i] – s2[i]; return s1[i] – s2[i]; } • 根據以上程式,試圖比較以下字串: • 「banana」與「bone」 • 「apple」與「application」 • 「aaa」與「aa」 • 「the」與「the」

  9. 練習題:複製字串 • 請設計以下副函式 void strcpy(char s1[], char s2[]); • 將s1中的內容(字元)複製到s2裡 • Key point:記住要字串結尾要有結束字元

  10. 練習題:串接字串 • 請設計以下副函式 void strcat(char s1[], char s2[]); • 將s2中的內容(字元)串接到到s1裡 • 例如:s1為「add」、s2為「ition」,呼叫完strcat()之後,s1變成「addition」。

  11. 字串的儲存

  12. 一個字串 a p p l e \0 • 字串為一維(且結尾附加結束字元)的字元陣列。 • 宣告方式 char str[100];

  13. 很多字串 a p p l e \0 a d d \0 b o n e \0 w i n \0 • 如果有很多字串儲存在一起呢? • 字串陣列;又每個字串都是一個一維的字元陣列 • 故字串陣列實際上就形成了一個二維的字元陣列 • 宣告方式 char strArray[4][6]; • strArray[2][3]:字串3的字元4是…

  14. 字串陣列 最多有幾個字串 每個字串最多有幾個字元 0 1 2 3 4 5 strArray[0] a p p l e \0 strArray[1] a d d \0 strArray[2] b o n e \0 strArray[3] w i n \0 char strArray[4] [6]

  15. 字串陣列 0 1 2 3 4 5 strArray[0] a p p l e \0 strArray[1] a d d \0 strArray[2] b o n e \0 strArray[3] w i n \0 • 每一列都可被當成一個字串來使用 • strArray[i][j]:這樣是一個字元 • 型態為char char strArray[4][6]; • strArray[i]:這樣是一個字串(row i) • 型態為char [] char strArray[4] [6];

  16. 字串陣列:使用範例 • 比較字串0和字串2是否相等: strcmp(strArray[0], strArray[2]); • 將輸入的字串拷貝到字串1: char input[100]; cin >> input; strcpy(strArray[1], input);

  17. 字串陣列:使用範例 char strArray[100][100]; char input[100]; int count = 0; do { cin >> input; strcpy(strArray[count], input); count++; if (count >= 100) break; } while (1); 連續讀入字串,再將字串讀入陣列中儲存

  18. 自訂函式庫

  19. 將副函式收集到一個檔案中 新增新的項目

  20. 選擇「C++檔案」並輸入檔名 • 副檔名:.cpp • 檔案名稱要盡量與程式內容相關

  21. 輸入副函式

  22. 建立標頭檔 新增新的項目

  23. 選擇「標頭檔」並輸入檔名 • 副檔名:.h • 檔案名稱最好能與對應的.cpp檔相同

  24. 輸入prototype

  25. 輸入prototype 注意:XXXXX為標頭檔檔名,一般要輸入大寫以示區隔,絕對不可與其他檔案中所定義的重複 副函式的prototype定義於此。 • 請在檔案的前後用以下的敘述匡住: #ifndefXXXXX_H #defineXXXXX_H #endif • 此敘述可用來避免重複宣告

  26. MyString.h MyString.cpp 各檔案的內容如下:

  27. 主函式如何使用副函式 • 為副函式建立標頭檔 • 把prototype放入其中 • 在主函式所在的檔案中載入標頭檔,即可用以宣告副函式。

  28. 範例 • 如果主函式需要用到函式庫當中的副函式時 • 先確認其.cpp與.h是否已經加到專案 • 請檢查方案總管 • 檢視->方案總管 • 在專案底下點選原始程式碼與標頭檔檢查是否已存在當中 • 如果沒有 • 先將該檔案複製到專案中main函式所屬的目錄夾檔中 • 在方案總管的原始程式碼上右按滑鼠,選擇加入現有項目,將該檔案(.cpp與.h檔)加入專案裡

  29. 範例 • 在主函式一開頭將其標頭檔include進來即可使用# • 因此,一旦往後有其他專案也需用到該副函式,只需要把他的.cpp檔與.h檔拷貝至專案目錄夾中,用方案總管加入專案中,再於需要檔案中include其標頭檔,即可馬上使用,不需再重寫一遍。

More Related