Microsoft Word - CH09

Size: px
Start display at page:

Download "Microsoft Word - CH09"

Transcription

1 字串 子曰 : 質勝文則野, 文勝質則史 文質彬彬, 然後君子 論語.雍也第六 和 是資料的兩大基礎元素 固然可以視為由 字元 構成的一維陣列, 標準的 C++ 提供了方便的程式庫, 讓我們能將 字串 視為獨立的單元, 以進行各種存取和剪接的處理 本章將探討處理字串的相關技術 9.1 字串的基本概念 9.2 字串的輸入與輸出 9.3 字串的處理 9.4 字串的指標陣列 9.5 字串處理在編碼上的應用 9.6 常犯的錯誤 9.7 本章重點 9.8 本章練習

2 C++ 程式設計 ( 第二版 ) 9.1 字串的基本概念 (string) 是由雙引號 " " 所包括起來的一串文字 例如 : "Hello!" " 嗨! 您好!" "Good boy." 字串在記憶體內的儲存方式很特別, 除了我們看到的文字部份外, 其後又多加了一個 \0 字元, 亦即 (NULL character); 它的 ASCII 值為零, 做為字串的結束記號 上面兩個例子在記憶體內的儲存方式如下 : H e l l o! \0 嗨! 您好! \0 G o o d b o y. \0 在上圖中, 英文字母 空隔和標點符號都佔有 1 個位元組 (8 bits), 而每個中文字佔了 2 個位元組 ( 注意, 逗號和驚嘆號各有,! 和,! 兩種寫法, 前者為 ASCII, 各只佔 1 byte, 後者為, 佔 2 bytes ) 字串可以視為由 (character, 資料型態為 char) 構成, 並以 '\0' 作為結尾的一維陣列 宣告字串的方式有下列三種 : char S1[20] = "Hello, 您好!"; // 陣列式的宣告 char S2[] = "Hello, 您好!"; // 自動設定字元陣列的長度為 13 char* ps2 = "Hello, 您好!"; // 指標式的宣告,C-style string 字串的存取可以透過指向第一個字元的指標, 也可以經由陣列的名稱 由於陣列的名稱本身也是一個指標 ( 詳見 8.1 節的說明 ), 因此字串的資料型態為 char * 在 C++ 中一個字串的 (value) 是第一個字元的位址 上述這種字串的定義方式也適用於 C 語言, 稱為 C-style string (C ) 9-2

3 第九章 字串 以一維陣列的方式逐一列舉字元定義字串 將 視為一維 char 陣列時, 也可以採用逐一列舉各字元的方式設定字串的初始值, 只是這種定義字串的方式太煩瑣, 實際上很少使用 譬如下列二例 ( 某些編譯器會自動添加 '\0'; 使用下面所示 S4 的語法時要確定有足夠的陣列長度 ): char S3[] = {'T', 'h', 'e', ' ', 'b', 'o', 'y', '\0'}; char S4[10] = {'\n', 'G', 'o', '!', '\0'}; (char) 可分為可以正常列印和顯示的各種英文字母和符號, 以及以反斜線開頭的指令字元 ( 例如 S4[10] 中的 '\n') 兩種, 但不包括中文字 這是因為每個 char 只佔一個 byte, 而每個中文字需要 2 bytes 如果把中文字當成字元, 則只有前一個 byte 被處理, 造成輸出結果被扭曲 ( 經常是亂碼 ) 因此, 當字串內含有中文時, 不可以使用上述在大括號內逐一列舉字元的語法 此外, 空白處要以字元 ' ' 表示 ( 兩個單引號之間有空隔 ), 如果不慎寫成 '' ( 兩個單引號之間沒有空隔 ), 則為錯誤的語法, 無法通過編譯 以指標的方式定義字串首先, 我們觀察下列宣告 : char* ps2 = " 嗨! 您好!"; 這個敘述在執行時發生了兩件事情 : (1) 在記憶單元內存入字串 " 嗨! 您好!" (2) 將此字串第一個字元的位址存入指標 ps2 裏面 如下圖所示 : ps2 嗨! 您好! \0 9-3

4 C++ 程式設計 ( 第二版 ) 當電腦接著執行下列敘述時 : ps2 = "Good boy."; 其結果並不是把 ps2 原先所指向的記憶體內容更換, 而是另外儲存新的字串, 並把 ps2 指向新字串的開頭字元, 如下圖所示 : ps2 嗨! 您好! \0 G o o d b o y. \0 兩個先後儲存的字串都各自佔有自己的記憶空間, 而且除非我們先把原有字串的起始位址存下來再改變 ps2 的指向目標, 否則原有字串 ( 亦即 嗨! 您好! ) 所佔用的空間在程式結束前再也無法存取! 只有字串的雙引號寫法才可以配合字串指標的初始化使用 例如, 上述的 char* ps2 = "Good luck!"; 也可以分開成兩個敘述 : char* ps2; ps2 = "Good luck!"; 然而, 下列則是錯誤的語法 : char* ps = { 'b', 'o', 'y'}; // 錯誤! 事實上, 讓我們對照一下由 double 數字構成的一維陣列 V: double V[3] = {48.4, 39.8, 40.5}; 它可以在宣告時同時給定初始值 ; 但是這種列舉式的敘述也不可使用指標 : double *pv = {48.4, 39.8, 40.5}; // 錯誤! 9-4

5 第九章 字串 9.2 字串的輸入與輸出 從鍵盤輸入或螢幕輸出資料的管道稱為 (stream) 輸出入的管道係由 <iostream> 程式庫所提供, 它是 C++ 標準式庫的一部份 我們在先前的大部份程式開頭的地方都有下列指令 : #include <iostream> using std::cin; using std::cout; using std::endl; 就是為了要使用由 <iostream> 程式庫所提供的輸出入的管道 cin 和 cout 表 列出字元和字串的輸出入相關函數 在運用它們時, 需要在程式開頭的地方以下列指令加入相關的標頭檔 <iostream>: #include <iostream> 表 C++ 字元和字串的輸出入相關函數及管道 iostream 標準函數或管道 cout cin cin.getline() cin.get() 功能輸出資料流輸入資料流字串輸入函數字元輸入函數 字串的輸出指令 cout 和 cin 分別要配合 << 和 >> 兩個運算子 在前述各章中, 我們已經有大量的使用經驗 一般而言, cout << x << endl; 是把變數 x 的內容直接輸出 如果 x 是指標, 則輸出的資料是其內存的位址 但是, 上述這個規則無法適用於 (string pointer) 9-5

6 C++ 程式設計 ( 第二版 ) 例如, 在執行下列使用字串和字串指標的敘述後 : char S1[20] = "Hello, 您好!"; char* ps = S1; 以下各種輸出敘述都得到同的字串, 亦即 "Hello, 您好!": cout << S1; cout << ps; cout << &S1[0]; cout << &ps[0]; 這是因為 cout 在遇到字串的指標或是字串的起始位址時, 會自動將輸出改為字串的內容, 而不是將位址輸出 此外, 由於字串都有明顯的 '\0' 做為結尾, 因此, 只有 '\0' 之前的部份會輸出, 其後的部份忽略不處理 如果我們要輸出字串的位址, 必須要使用下列特殊語法 : cout << (void *)S1; cout << (void *)ps; 字串的輸入指令 cin 可以做為字元或字串的標準輸入管道, 但其輸入資料流在遇到空隔 ( 亦即鍵盤上的空白鍵 ), 或新行 ( 下一行,new line) 符號 '\n' ( 亦即按下鍵盤上的輸入鍵 ) 都會停止 因此, 如果要輸入 "Hello, 您好!" 的字串時, 必須分兩次擷取 : char S1[20], S2[20]; cin >> S1 >> S2; 為了避免這個限制, 可以改用函數 cin.getline() 它的參數有三個 : cin.getline( 字串名稱, 最大字串長度, 結束字元 ); 其中 結束字元 的預設值是 '\n', 足以應付大部份的情況 以本例而言, 只要將敘述改成以下的形式即可完整輸入包括空白處的整個字串 : cin.getline(s1, 20); // 輸入字串並存入 S1 9-6

7 第九章 字串 此外, 函數 cin.get() 一次只能輸入一個字元, 其使用方式如下 : char C1; cin.get(c1); // 輸入字元並存入 C1 程式 BasicString.cpp 將上述包括字串的宣告 初始化, 和輸入 輸出等操作寫成一個完整的程式 為了比較, 我們在程式中另外加入了一個 int 向量 I, 以顯示一般不是字串的一維矩陣名稱與 cout 配合使用時, 得到的是位址, 而不是陣列的內容 範例程式檔案 BasicString.cpp // BasicString.cpp #include <iostream> using namespace std; // --- 主程式 int main() { const int SLength = 30; char S1[SLength] = "Hello, 您好!"; int I[5]={1, 2, 4, 5, 6}; char* ps; int* pi=i; ps=s1; cout << "S1 is: " << S1 << endl; cout << "ps is: " << ps << endl; cout << "I is: " << I << endl; cout << "pi is: " << pi << endl; cout << "*S1 is: " << *S1 << endl; cout << "&S1[0] is: " << &S1[0] << endl; cout << "S1[0] is: " << S1[0] << endl; cout << "(void*)s1[0] is: << (void*)s1[0] << endl; cout << "(void*)s1 is: " << (void*)s1 << endl; cout << "\n 請輸入 S1 的新值 :\n"; cin.getline(s1,slength); cout << " 輸入新值後, S1 的值為 : \n" << S1 << endl; system("pause"); return 0; } 9-7

8 C++ 程式設計 ( 第二版 ) 程式執行結果 S1 is: Hello, 您好! ps is: Hello, 您好! I is: 0012FF1C pi is: 0012FF1C *S1 is: H &S1[0] is: Hello, 您好! S1[0] is: H (void*)s1[0] is: (void*)s1 is: 0012FF30 請輸入 S1 的新值 : As seen by you. 輸入新值後, S1 的值為 : As seen by you. 9.3 字串的處理 如果把字串看做 資料型態為 char 的一維陣列, 則其中的每個字元都可以單獨使用下標或是指標代數的方式來存取 例如, 對於下列字串 S1 和字串指標 ps 兩個含有初始化敘述的定義 : const Length = 40; char S1[Length] = "Good luck!"; char* ps = S1; 字串 S1 的第 4 個字元 ( 亦即 'd') 可以使用下列四種寫法來存取 : S1[3] *(S1+3) ps[3] *(ps+3) 9-8

9 第九章 字串 常用的字串處理函數我們固然可以採用每次只處理一個字元的觀點來進行字串的各種複製 銜接 計算長度 比較等等處理, 使用 C++ 編譯器所附設的標準字串處理函數庫 <cstring> 可以讓這些處理更簡潔, 更有效率 表 列出常用的標準字串處理函數 在使用它們前, 需要在程式開頭處加入以下的標頭檔敘述 : #include <cstring> 表 標準字串處理函數 ( 需要標頭檔 <cstring>) 函數名稱 strlen( 字串 ) strcpy( 字串 1, 字串 2) strcat( 字串 1, 字串 2) strcmp( 字串 1, 字串 2) strchr( 字串, 字元 ) 功能求出不包括 \0 的字串長度 將 字串 2 的內容複製到 字串 1 內 將 字串 2 銜接到 字串 1 之後 將 字串 1 和 字串 2 作比較 如果 ( 字串 1 < 字串 2) 則輸出負整數如果 ( 字串 1 = = 字串 2) 則輸出 0 如果 ( 字串 1 > 字串 2) 則輸出正整數尋找字串中第一個與指定的字元相同處的位址 由於 strcpy() 和 strcat () 在處理時不會先行檢查記憶空間是否足夠, 因此使用時要特別小心, 避免儲存到沒有宣告的位置, 造成執行上的錯誤, 嚴重時可導致當機 此外,strcmp () 依次比較的是兩字串內各字元的內碼大小 我們使用程式 StringProc.cpp 示範如何將上述標準字串處理函數置於完整的程式中應用 9-9

10 C++ 程式設計 ( 第二版 ) 範例程式檔案 StringProc.cpp // StringProc.cpp #include <iostream> #include <cstring> using namespace std; // --- 主程式 int main() { const int SLength = 30; char S1[SLength] = "Hello, 您好!"; char S2[SLength] = "Good boy."; char *ps1, *ps2; ps1=s1; ps2=s2; cout << "\n" << "ps1 的值為 : " << ps1 << "\n" << "ps1 的長度為 : " << strlen(ps1) << " 字元." << endl; cout << "\n" << "S1 的值為 : " << S1 << "\n" << "S1 的長度為 : " << strlen(s1) << " 字元." << endl; cout << "\n" << "ps2 的值為 : " << ps2 << "\n" << "ps2 的長度為 : " << strlen(ps2) << " 字元." << endl; strcat(s1, S2); cout << " 執行 strcat(s1, S2); 後," << "S1 的值為 : \n" << S1 << endl; cout << " 執行 strcmp(s1, S2); 的值為 : " << strcmp(s1, S2) << endl; char* p = strchr(s1, 'l'); cout << " 第 1 個 'l' 位於 S1 的第 " << (p - ps1)+1 << " 個字元的位置 " << endl; cout << " 執行 strchr(s1, 'l'); 的值為 : " << strchr(s1, 'l') << endl; strcpy(s1, S2); cout << " 執行 strcpy(s1, S2); 後," << "S1 的值為 : \n" << S1 << endl; system("pause"); return 0; } 9-10

11 第九章 字串 程式執行結果 ps1 的值為 : Hello, 您好! ps1 的長度為 : 12 字元. S1 的值為 : Hello, 您好! S1 的長度為 : 12 字元. ps2 的值為 : Good boy. ps2 的長度為 : 9 字元. 執行 strcat(s1, S2); 後,S1 的值為 : Hello, 您好!Good boy. 執行 strcmp(s1, S2); 的值為 : 1 第 1 個 'l' 位於 S1 的第 3 個字元的位置執行 strchr(s1, 'l'); 的值為 : llo, 您好!Good boy. 執行 strcpy(s1, S2); 後, S1 的值為 : Good boy. 1. 在本程式中, 我們分別示範了 strlen(),strcat(),strcmp(),strchr(), 和 strcpy() 5 個函數的用法 2. 函數 strlen() 的參數可以用字串 S1 或字串指標 ps1 其他字串處理函數也都具有相同的特性 3. 執行 strcmp(s1, S2); 的值為 1, 因為 S1 的第一個字母 'H' 比 S2 的第一個字母 'G' 在 ASCII 表中的次序較後面, 值比較大 4. 函數 strchr() 可以找到字串中第一個與指定的字元相同處的位址 但因為 直接從 cout 輸出時, 得到的是從這個位址之後的字串, 例如程式對於 strchr(s1, 'l') 的輸出是 llo, 您好!Good boy. 因此要與字串開頭處的位址 ( 例如程式中的 ps1) 相減, 才可得到相對的位置 9-11

12 C++ 程式設計 ( 第二版 ) 字串與數字的轉換 (conversion between strings and numbers) 字串內容的資料是以 ASCII 或 Unicode 的方式儲存的, 而數字則是以二進位的方式儲存, 因此 "365" 和 365 所代表的意義完全不同 數字可以進行數學運算, 但字串不可以 如果要將字串與數字互相轉換, 可以使用 C++ 編譯器所附設的標準字串轉換函數庫 表 列出常用的三種標準字串轉換函數 在使用它們前, 需要在程式開頭處加入以下的標頭檔敘述 : #include <cstdlib> 表 標準字串轉換函數 ( 需要標頭檔 <cstdlib>) 函數名稱 atoi( 字串 ) atof( 字串 1, 字串 2) itoa( 整數, 字串, 基底 ) 功能 將字串轉成整數, 遇到非數字字元時, 停止轉換 將字串轉 double 數字, 遇到非數字或小數點字元時, 停止轉換 將整數轉成以基底為進位數的 ASCII 字串 例如基底為 10 表示十進位數字 在程式 St2Num.cpp 中, 我們分別示範了 atoi() atof() 和 itoa() 共 3 個函數的用法 範例程式檔案 St2Num.cpp // St2Num.cpp #include <iostream> #include <cstdlib> using namespace std; // --- 主程式 int main() { const int SLength = 20; char S1[SLength] = " 320"; char S2[SLength] = " 60.5"; char *ps1, *ps2; 9-12

13 第九章 字串 int Num = 365; ps1=s1; ps2=s2; cout << "\n 的值為 : " << atoi(ps1)+5 << endl; cout << "\n 的值為 : " << atof(ps2)+5 << endl; itoa(num, S2, 10); cout << "\ns2 的值 ( 十進位 ) 為 : " << S2 << endl; itoa(num, S2, 16); cout << "\ns2 的值 ( 十六進位 ) 為 : 0x" << S2 << endl; itoa(num, S2, 2); cout << "\ns2 的值 ( 二進位 ) 為 : " system("pause"); return 0; } << S2 << endl; 程式執行結果 的值為 : 的值為 : 65.5 S2 的值 ( 十進位 ) 為 : 365 S2 的值 ( 十六進位 ) 為 : 0x16d S2 的值 ( 二進位 ) 為 : 字元的檢查與大小寫轉換有時為了將某份檔案中的文字進行特殊的轉換和編排的工作, 譬如 : 進行大小寫的轉換 將數據中的逗點, 去除 將所有的文字對齊 將所有的非數字符號去除 將所有的段落符號去除等等這類的工作都需要逐一進行字元的檢查或是轉換 這類的功能可以呼叫 C++ 的標準字元函數庫 <cctype>, 詳列在表 中 這些函數輸出部份的資料型態都是 int, 在功能說明中 否 表示 0, 9-13

14 C++ 程式設計 ( 第二版 ) 而 是 表示任意非零的整數, 通常為 1 使用前要記得在程式開頭加入以下的敘述 : #include <cctype> 表 標準字元檢查與轉換函數 ( 需要標頭檔 <cctype>) 函數 功能 ( 假設 ch 是個 char 資料 ) isalpha(ch) 判斷 Ch 是否為英文字母 isupper(ch) 判斷 Ch 是否為大寫英文字母 islower(ch) 判斷 Ch 是否為小寫英文字母 isdigit(ch) 判斷 Ch 是否為 0 至 9 的數字 isascii(ch) 判斷 Ch 是否為 ASCII 字元 isspace(ch) 判斷 Ch 是否為空白間隔 isprint(ch) 判斷 Ch 是否為可以印出來或看得見的字元 iscntrl(ch) 判斷 Ch 是否為控制字元 ispucnt(ch) 判斷 Ch 是否為標點符號字元 toupper(ch) 如果 Ch 為小寫, 則將其轉為大寫英文字母 tolower(ch) 如果 Ch 為大寫, 則將其轉為小寫英文字母 在程式 CharConv.cpp 中, 我們示範了兩個字元的大小寫轉換和判斷的函數 toupper() 和 isalpha() 的使用方式 : 範例程式檔案 CharConv.cpp // CharConv.cpp #include <iostream> #include <cctype> using namespace std; // --- 主程式 int main() { const int SLength = 60; char S1[SLength], Ch; cout << " 請輸入一句英文 :" << endl; cin.getline(s1,slength); for (int i=0; S1[i]!='\0';i++) S1[i] = toupper(s1[i]); cout << " 此句英文轉成大寫後是 :\n" << S1 << endl; 9-14

15 第九章 字串 } cout << " 請輸入一個字元 :" << endl; Ch = cin.get(); if (isalpha (Ch)) cout << " 您輸入了一個英文字母 " << endl; else cout << " 您輸入的不是英文字母 " << endl; system("pause"); return 0; 程式執行結果 請輸入一句英文 : How I love you! 此句英文轉成大寫後是 : HOW I LOVE YOU! 請輸入一個字元 : g 您輸入了一個英文字母 1. 在本程式中, 我們分別示範了 isalpha() 和 toupper() 兩個函數的用法 為了使用這兩個函數, 我們在程式前加入了以下兩個 using 宣告 : using std::toupper; using std::isalpha; 用來說明即將用到的標準函數名稱 我們也可以用 using 指令 using namespace std; 來取代這兩個 using 宣告 我們將在第 16 章 名稱空間 中詳細討論 using 和 using 的用法 2. 字串的各種處理都有 C++ 標準函數庫的支援, 在使用時必須在程式前加上適當的 例如: #include <iostream> #include <cstring> #include <cstdlib> #include <cctype> 這些標頭檔名稱的第一個字母 c 示繼承自 C 程式語言 C++ 本身有一個專屬的字串處理標頭檔, 使用下述標頭檔含入指令 : #include <string> 不過, 它是以物件導向的方式使用, 在 23.4 節有相關的討論及範例 我們在第 18 章以後才會仔細介紹物件導向的語法 9-15

16 C++ 程式設計 ( 第二版 ) 9.4 字串的指標陣列 如果把具有相同特質的一群字串以 (pointer array) 來代表, 常常可以讓字串的處理更加方便 例如, 我們可以將某個班的同學姓名以指標陣列的方式宣告 : const Number = 5; char* Classmates[Number] = {" 丁乾耀 ", " 林昱為 ", " 張喬安 ", " 林昱嘉 ", " 張楚安 "}; 則使用 Classmates[i] 很方便地就可以取用第 i 個成員的姓名 例如 : cout << " 班上同學的名單是 :\n"; for (int i=0; i<number; i++) cout << Classmates[i] << \n ; 我們在程式 StringPArray.cpp 中使用指標陣列改寫 4.5 節的程式 Seasons. cpp, 讓程式更簡潔 這個程式的功能是將使用者輸入的月份經由處理後, 將其所屬的季節顯示出來 範例程式檔案 StringPArray.cpp // StringPArray.cpp #include <iostream> using namespace std; // --- 函數 FindSeason() 的宣告 char* FindSeason(int); // --- 主程式 int main() { int Num; cout << "\n 請輸入一個月份 : " << endl; cin >> Num; cout << "\n" << Num << " 月是 " << FindSeason(Num) << endl; system("pause"); return 0; } // --- 函數 FindSeason() 的定義 char* FindSeason(int Month) { 9-16

17 第九章 字串 int N; char* Seasons[]={" 冬季 "," 春季 "," 夏季 "," 秋季 "}; if (Month < 1 Month >12) return "( 您輸入的月份沒有意義 )"; N =(Month%12)/3; return Seasons[N]; } 程式執行結果 請輸入一個月份 : 9 9 月是秋季 9.5 字串處理在編碼上的應用 (encoding) 在以前的諜報工作中和現代的網路安全應用上, 都是一個常用的技巧 藉由編碼, 可以讓文字依某個對照表轉換成無法直接閱讀的字串, 只有使用原來的對照表才能將此字串還原 在程式 EncodeText.cpp 中, 我們將編碼的工作寫成一個函數 Encode(), 在其中含有編碼對照表 Codes[] 本程式可以將英文字母 ( 不管大小寫 ) 依對照表轉換後輸出, 對於其他不是英文字母的符號則以空白取代 範例程式檔案 EncodeText.cpp // EncodeText.cpp #include <iostream> #include <cstring> using namespace std; // --- 函數 Encode() 的宣告 void Encode(char* ); // --- 主程式 int main() { const MaxLength=40; char InputString[MaxLength]; cout << "Please input your original code:\n"; cin.getline(inputstring, MaxLength); 9-17

18 C++ 程式設計 ( 第二版 ) Encode(InputString); cout << "The answer is:\n"; cout << InputString; system("pause"); return 0; } // --- 函數 Encode() 的定義 void Encode(char* String) { char Codes[28]="DOJKZCTMYPAWHUQNBVGSRFXLIE "; char ABC[28] ="ABCDEFGHIJKLMNOPQRSTUVWXYZ "; char abc[28] ="abcdefghijklmnopqrstuvwxyz "; int i, j, Size = strlen(string); } for(i=0; i<size;i++) { j=0; while (String[i]!=ABC[j] && String[i]!=abc[j] && j<26) j++; String[i]=Codes[j]; } return; 程式執行結果 Please input your original code: I love you The answer is: Y WQFZ IQR 為了達到編碼的功能, 我們在 while 的判斷式中分別比對大小寫字母, 並累計已比對的數量, 以忽略不在編碼表內的字母 9-18

19 第九章 字串 9.6 常犯的錯誤 1. 計算字串長度時, 沒有把結尾的空字元 '\0' 算在內 2. 使用 strcpy() 進行字串間的複製, 或使用 strcat() 進行字串間的銜接時, 沒有考慮到空間是否足夠 3. 使用標準函數庫時, 沒有使用適當的標頭檔含入指令 4. 沒有正確區別 陣列 和 指標 的不同 例如 char* p1, *p2; p1 = "A string."; strcpy (p2, p1); 是錯誤的, 因為 p2 是一指標, 且未曾指向任何字串 只要在上列最後一行的敘述 strcpy (p2, p1); 之前加上 或 p2 = " "; p2 = new char [strlen(p1)+1]; 的敘述, 以備妥適當的記憶空間, 即可解決這個問題 9.7 本章重點 1. 字串是由雙引號 " " 所包括起來的一串文字 2. 字串在記憶體內佔用的空間, 除了文字和空白部份外, 每個字串的後面都有一個空字元 '0' 以標誌字串的結束 每個中文字佔用 2 bytes 3. 字串可視為 由 char 組成的一維陣列, 其宣告可以使用標準陣列的方式, 也可使用指標, 例如 : char S1[50] = "Boy! 好耶!"; char* ps = S1; 9-19

20 C++ 程式設計 ( 第二版 ) 4. 中文字無法以字元的形式表達 例如 ' 好 ' 是錯誤的語法, 即使只有一個中文字也需使用字串, 例如 " 好 " 5. 字串指標可以在宣告時初始化其內容 例如 char* ps = " 容易多了!"; 這個語法對於其他非 char 的資料型態並不適用 6. 將字串的指標配合 cout 使用時, 得到的不是位址, 而是字串內容 例如, 延用上述第 3 點 S1 和 ps 的定義 : cout << S1; cout << ps; 都會得到字串的內容 如果要輸出位址, 需要改寫為 cout << (void *) S1; cout << (void *) ps; 7. 指令 char* ps2; ps2 = S1; 並不是把字串 S1 的內容複製到 ps2 所指的字串內, 而是另行儲存一份內容一樣的字串, 並把 ps2 指向此字串 如果要進行真正的複製動作, 需要寫成以下的敘述 : strcpy (ps2, S1); 8. 字串的各種處理都有 C++ 標準函數庫的支援, 在使用時必須在程式前加上適當的標頭檔含入指令 例如 : #include <iostream> #include <cstring> #include <cstdlib> #include <cctype> 這些標頭檔名稱第一個字 c 表示繼承自 C 程式語言 C++ 本身有一個專屬的字串處理標頭檔, 使用下述標頭檔含入指令 : #include <string> 9-20

21 第九章 字串 不過, 它是以物件導向的方式使用, 在 23.4 節有相關的討論及範例 我們在第 18 章以後才會仔細介紹物件導向的語法 9. 以 (pointer array) 的方式取用一群有共同特性的字串, 可以增進程式的效率和簡化程式的撰寫 9.8 本章練習 1. 下敘述有何錯誤? int Length = 20; char S[Length]; Length 必須是常數 2. 給定下列宣告 : char* ps = "Hello, 您好!"; 則 ps[2] 和 ps[7] 各是什麼? 字串的長度為何? 1. ps[2] 是 'l',ps[7] 是中文字 您 的後半段 bytes ( 注意, 逗號和驚嘆號各有,! 和,! 兩種寫法), 前者為 ASCII 碼, 只佔 1 byte, 後者為全型碼, 佔 2 bytes ) 3. 寫出一個函數 Trim(), 以便用來將字串前後的空白都去掉 本題主要架構和 9.5 節的範例程式 EncodeText.cpp 很像, 由於 Trim() 所產生的結果只可能縮短或不變, 每個字元只會前移或留在原處, 因此不需另建新字串把處理後的內容存入 可使用 <cctype> 的 isspace() 和 isascii() 等函數來判斷字串內容 9-21

22 C++ 程式設計 ( 第二版 ) 4. 使用指標完成一個函數 AppendChar() 以便在字串之後加上一個任意指定的字元 首先將該字元轉成字串, 再利用 <cstring> 中的函數 strcat() 將兩字串銜接起來 5. 寫一個函數 Reverse(), 以便將任何輸入字串的前後次序顛倒過來 將字串元素以下標分別取出, 配合 for 迴圈即可完成 6. 完成一個函數 CountDigit(), 用來計算任何輸字串中的數字數量 使用 <cstring> 中的函數 isdigit() 協助判斷 7. 完成一個函數 CountChar(), 以便用來計算字串中任一指定字元的數量 使用 <cstring> 中的函數 strchr() 協助尋找 8. 完成一個程式, 可以將任何從 0 到 6 的輸入數字, 以英文的對應星期順序輸出 例如, 以 Wednesday 對應 3, 表示星期三, 以 Sunday 對應 0 使用字串的指標陣列 (pointer array) 9. 延伸 9.5 節中的程式, 寫出一個函數 Decode(), 用來將已編碼過後的字串還原 仔細研讀原來的程式, 只要把編碼表的對象顛倒即可 解答在隨書所附的光碟中, 詳見程式 Decode.cpp 9-22

Microsoft PowerPoint - ch09_AEL0080.ppt

Microsoft PowerPoint - ch09_AEL0080.ppt 9 字 串 子曰 : 質勝文則野, 文勝質則史 文質彬彬, 然後君子 論語論語.雍也第六雍也第六 標準的 C++ 提供了方便的程式庫, 讓我們能將 字串 視為獨立的單元, 以進行各種存取和剪接的處理 1/36 字串 9.1 9.2 9.3 9.4 9.5 字串的基本概念字串的輸入與輸出字串的處理字串的指標陣列字串處理在編碼上的應用 2/36 字串的基本概念 字串 (string) 是由雙引號 所包括起來的一串文字

More information

C/C++基礎程式設計班

C/C++基礎程式設計班 C/C++ 基礎程式設計 字元與字串 講師 : 張傑帆 CSIE, NTU 人的出身並不重要, 你拿時間來做什麼才重要 It s not who you were at birth that matters, but what you do with the time you are given.-steve Jobs 課程大綱 字元 字串 作業 字元 在電腦的世界裡, 所有的一切都是以 0 與 1

More information

C/C++基礎程式設計班

C/C++基礎程式設計班 C/C++ 基礎程式設計 字元與字串 講師 : 張傑帆 CSIE, NTU 人的出身並不重要, 你拿時間來做什麼才重要 It s not who you were at birth that matters, but what you do with the time you are given.-steve Jobs 課程大綱 字元 字串 作業 字元 在電腦的世界裡, 所有的一切都是以 0 與 1

More information

Microsoft Word - AEL 序.doc

Microsoft Word - AEL 序.doc 序 C++ 全方位學習一書入選 100 狀元閱讀書單科學類排名第 15, 也是唯二入選的程式設計類書, 因此筆者決定重新改版, 以便造福更多想學習 C++ 程式設計的學生 C++ 全方位學習第二版保留第一版的編排特色, 而刪除比較不實用的大型程式範例與標準範本程式庫, 然後在各章習題中加入選擇題, 使其更加適合用於技職院校及大學教學 C++ 全方位學習第二版是針對專科與大學教學進度而編寫的, 內容由淺入深

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2

内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2 第 六 讲 指 针 与 字 符 串 1 内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2 指 针 什 么 是 指 针 指 针 的 定 义 与 运 算 指 针 与 一 维 数 组 指 针 数 组 行 指 针 与 二 维 数 组 指 针 与 引 用 指 针 与 函 数 3 指 针 定 义 什 么 是 指 针 指 针 变 量, 简 称 指 针, 用 来 存 放

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

Microsoft PowerPoint - C_Structure.ppt

Microsoft PowerPoint - C_Structure.ppt 結構與其他資料型態 Janet Huang 5-1 結構的宣告 struct 結構名稱 struct 結構名稱變數 1, 變數 2,, 變數 m; struct 結構名稱 變數 1, 變數 2,, 變數 m; student; student; 5-2 1 結構變數初值的設定 struct 結構名稱 struct 結構名稱變數 = 初值 1, 初值 2,, 初值 n student="janet","1350901",100,95

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

Strings

Strings Strings Cheng-Chin Chiang Strings Strings 一串儲存在連續記憶體之字元串 表示法 : 以雙引號圍起 This is a book, I love programming, 12234 字串須有一結束字元 \0 (NULL) 在字串尾,NULL 在 C++ 內為一個內定常數值 H i t h e r e! \0 An Array Type of Strings

More information

C 語言—陣列及字串

C 語言—陣列及字串 10/16 系程主講人 : 荊輔翔 概論 陣列 陣列是一個具有索引 (index) 性質的連續資料儲存空間集合 陣列中每一個資料儲存空間稱之為陣列元素 (array element); 它們都具有相同的資料名稱 資料型態 及空間大小 ; 但存取它們時則須藉由索引 ( 或稱註標 ) 來區別辨識 索引代表資料在陣列中的相對位址 ( 其計數由 0 開始, 其餘累加類推 ), 且須由中括號 [ ] 涵蓋之

More information

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

02

02 Thinking in C++: Volume One: Introduction to Standard C++, Second Edition & Volume Two: Practical Programming C++ C C++ C++ 3 3 C C class C++ C++ C++ C++ string vector 2.1 interpreter compiler 2.1.1 BASIC

More information

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1 0 0 = 1 0 = 0 1 = 0 1 1 = 1 1 = 0 0 = 1 : = {0, 1} : 3 (,, ) = + (,, ) = + + (, ) = + (,,, ) = ( + )( + ) + ( + )( + ) + = + = = + + = + = ( + ) + = + ( + ) () = () ( + ) = + + = ( + )( + ) + = = + 0

More information

Microsoft PowerPoint - 08_陣列與函式.pptx

Microsoft PowerPoint - 08_陣列與函式.pptx 1 2 Outline 二維與多維陣列 Lecture 08 多維陣列函式 標準函式庫 函式簡介 一維陣列 二維陣列與多維陣列 陣列為多個同一型態變數之組合 int a[10]; 可存放 10 個整數資料的陣列, 可視為 10 個變數排成一個隊伍, 並給每一個變數一個編號, 自 0 號開始 至 9 號為止 a[0], a[1], a[2], a[],, a[9] 5 6 二維陣列的宣告 陣列為多個同一型態變數之組合

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 9 [P.11] : Dev C++ [P.12] : http://c.feis.tw [P.13] [P.14] [P.15] [P.17] [P.23] Dev C++ [P.24] [P.27] [P.34] C / C++ [P.35] 10 C / C++ C C++ C C++ C++ C ( ) C++

More information

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf (%d, & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf (%d %d 2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,

More information

Microsoft PowerPoint - Class5.pptx

Microsoft PowerPoint - Class5.pptx C++ 程式初探 V 2015 暑期 ver. 1.0.1 C++ 程式語言 大綱 1. 大量檔案讀取 & 計算 2. 指標 3. 動態記憶體 & 動態陣列 4. 標準函式庫 (STL) vector, algorithm 5. 結構與類別 2 大量檔案讀取 & 計算 若目前有一個程式將讀取純文字文件 (.txt) 中的整數, 並將該文件中的整數有小到大排序後, 儲存到另外一個新的純文字件中 假設有

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

Microsoft Word - ACL chapter02-5ed.docx

Microsoft Word - ACL chapter02-5ed.docx 第 2 章神奇的質數 2.1.1 什麼是質數 1 1 1 打下好基礎 - 程式設計必修的數學思維與邏輯訓練 1 1 0 10 2 3 5 7 4 6 8 9 10 4 10000 1229 1000 168 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131

More information

untitled

untitled 串 串 例 : char ch= a ; char str[]= Hello ; 串 列 ch=getchar(); scanf( %c,&ch); 串 gets(str) scanf( %s,str); 8-1 數 ASCII 例 : char ch= A ; printf( %d,ch); // 65 A ascii =0x41 printf( %c,ch); // A 例 : char ch;

More information

C/C++ - 字符串与字符串函数

C/C++ - 字符串与字符串函数 C/C++ Table of contents 1. 2. 3. 4. 1 char C 2 char greeting [50] = " How " " are " " you?"; char greeting [50] = " How are you?"; 3 printf ("\" Ready, go!\" exclaimed John."); " Ready, go!" exclaimed

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

新版 明解C言語入門編

新版 明解C言語入門編 328, 4, 110, 189, 103, 11... 318. 274 6 ; 10 ; 5? 48 & & 228! 61!= 42 ^= 66 _ 82 /= 66 /* 3 / 19 ~ 164 OR 53 OR 164 = 66 ( ) 115 ( ) 31 ^ OR 164 [] 89, 241 [] 324 + + 4, 19, 241 + + 22 ++ 67 ++ 73 += 66

More information

Microsoft PowerPoint - CH02 Introduction to C++ Programming_輸入與輸出 [相容模式]

Microsoft PowerPoint - CH02 Introduction to C++ Programming_輸入與輸出 [相容模式] Ch2. Introduction to C++ Programming 輸入與輸出 標準 I/O 課程名稱 : 程式設計 Computer Programming 班級 : 資管一 Freshman, ISMS 任課教師 : 謝明哲 Hsieh, Ming-Che, Miller 單位職稱 : 台東大學資管系副教授 Associate Professor, ISMS, NTTU 電子郵件 :hmz@nttu.edu.tw

More information

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf (%d, & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9 201 201 21 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 1 B 1 C 5 D RPG 10 E 10 F 1 G II 1 1 201 201 C 1 # include 2 int main ( void

More information

!249 第 八講 進階指標 講師 : 李根逸 (Ken-Yi Lee),

!249 第 八講 進階指標 講師 : 李根逸 (Ken-Yi Lee), 249 第 八講 進階指標 講師 : 李根逸 (Ken-Yi Lee), E-mail: feis.tw@gmail.com 250 課程 大綱 陣列的複製 [P.252] 字串的特殊性 [P.255] const 修飾字 [P.256] 指標陣列 [P.257] 字串陣列 [P.258] 指標與 二維陣列 [P.260] 動態記憶體配置與釋放 C 語 言中動態記憶體的配置 [P.266] C 語

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 177 [P179] (1) - [P181] [P182] (2) - for [P183] (3) - switch [P184] [P187] [P189] [P194] 178 [ ]; : : int var; : int var[3]; var 2293620 var[0] var[1] 2293620

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

C/C++基礎程式設計班

C/C++基礎程式設計班 C/C++ 基礎程式設計 C++: 物件的使用 參考 重載函式 成就別人認為不可能的事 Do what nobody else considered possible. -Steve Jobs 講師 : 張傑帆 CSIE NTU C++ 相較於 C 的特色 向下相容 在 C 語言中, 我們學了許多程式語法, 所有學過的東西, 在 C++ 中都可以使用 高階的程式描述方式 更利於用來開發大型專案, 讓程式設計師在分工時更能快速的開發程式,

More information

運算子多載 Operator Overloading

運算子多載 Operator Overloading 函數樣板 (Function Template) 與 類別樣板 (Class Template) 講師 : 洪安 1 資料結構與 C++ 程式設計進階班 為何需要通用函數? (1/2) int abs(int x) { return (x>0)?x:-x; 取名困難不好記 float fabs(float x) { return (x>0)?x:-x; complex cabs(complex x)

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00 Excel - - Excel - -4-5 840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00 ( 0 ) 智慧標籤 相關說明提示 -5 -- Excel 4 5 6 7 8 + - * / % ^ = < >= & 9 0 (:) (,) ( ) Chapter - :,

More information

投影片 1

投影片 1 資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

資料結構之C語言重點複習

資料結構之C語言重點複習 鏈結串列自編教材 ( 一 ) 本教材 ( 一 ) 目標問題 : 每次以亂數產生一 [0,1000] 之整數值, 若該值 >100, 則以同方式繼續產生下一亂數值, 若該值

More information

Microsoft PowerPoint - 02_運算.pptx

Microsoft PowerPoint - 02_運算.pptx 回顧 第一個程式 基本架構 五行必寫的公式 註解的寫法 cout

More information

Microsoft PowerPoint - chap3

Microsoft PowerPoint - chap3 第三章基本輸出與輸入的方法 資訊科技系 林偉川 本章簡介 如何從鍵盤輸入資料以及從螢幕輸出結果, 是寫程式一個很基本的技巧, 因為這也是使用者與電腦交談的重要橋樑 在 C 語言函式庫中有不少輸出 / 入相關函式, 不過較常用到的也只有其中幾個 從螢幕輸出類 : 由鍵盤輸入類 : 2 1 從螢幕輸出類 printf(): 函數名稱取 print 以及 format 兩個字組成 此函式會將我們指定的字串以指定的格式輸出在螢幕上

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

105Tr_CIS1

105Tr_CIS1 准考證號碼 : 國立臺中教育大學 105 學年度學士班日間部轉學招生考試 計算機概論試題 適用學系 : 資訊工程學系二 三年級 一 選擇題 (40%, 每題 2%) 1. 在物件導向程式設計中, 一個抽象類別 (Abstract Class) 為 A. 一個沒有方法 (method) 的類別 B. 一個不能被繼承 (inherit) 的類別 C. 一個不能被實體化 (instantiated) 的類別

More information

Microsoft Word - 投影片ch03

Microsoft Word - 投影片ch03 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第三章變數與資料型態 本章學習目標認識變數與常數認識 Java 的基本資料型態學習如何進行資料型態轉換學習如何由鍵盤輸入資料 變數與資料型態 3-2 Java 的資料型態分為 : 與 原始資料型態 (primitive type) 非原始資料型態 (non-primitive type) 原始資料型態包括了整數與浮點數等型態

More information

字元意義備註 \n 換行字元 \t Tab \r 迴車鍵 Windows 系統中以 \r\n 代表換行 \ 單引號 \" 雙引號 \0 空字元 用來代表字串的結束 \\ 倒斜線 倒斜線被用做跳脫字元, 因此要用兩個倒斜線表示 表 3.2: 常用特殊字元 ( 二 ) 常用技巧 : 字元判斷在 ASCI

字元意義備註 \n 換行字元 \t Tab \r 迴車鍵 Windows 系統中以 \r\n 代表換行 \ 單引號 \ 雙引號 \0 空字元 用來代表字串的結束 \\ 倒斜線 倒斜線被用做跳脫字元, 因此要用兩個倒斜線表示 表 3.2: 常用特殊字元 ( 二 ) 常用技巧 : 字元判斷在 ASCI 第三章 字串處理 第一節 字元與字串 一 字元與 ASCII C++ 中的字元 (Character) char 其實是儲存一個 0 到 255 的整數, 在電腦中有一個符號表, 每個符號都有他各自的編號 輸出字元時, 計算機就會自動將 char 裡面的整數去查符號表, 印出對應符號, 這個表格我們稱為 ASCII 碼 雖然 char 印出來是符號, 但實際上儲存的是整數 ASCII 碼網路上都能查到,

More information

程式基礎之字串函數與處理篇 前言 無論是在現實世界或是網路世界, 文字都是我們溝通的方式之一 在資訊的世界裡面, 怎麼利用程式把文字照自己想要的方式呈現就是個很基本也很重要的技術 但我們可能會發現, 許多文字處理要做的事情都很類似 ( 例如把兩個字串接在一起, 或是照特定格式輸出 ), 因此在 C

程式基礎之字串函數與處理篇 前言 無論是在現實世界或是網路世界, 文字都是我們溝通的方式之一 在資訊的世界裡面, 怎麼利用程式把文字照自己想要的方式呈現就是個很基本也很重要的技術 但我們可能會發現, 許多文字處理要做的事情都很類似 ( 例如把兩個字串接在一起, 或是照特定格式輸出 ), 因此在 C 程式基礎之字串函數與處理篇 前言 無論是在現實世界或是網路世界, 文字都是我們溝通的方式之一 在資訊的世界裡面, 怎麼利用程式把文字照自己想要的方式呈現就是個很基本也很重要的技術 但我們可能會發現, 許多文字處理要做的事情都很類似 ( 例如把兩個字串接在一起, 或是照特定格式輸出 ), 因此在 C 語言中提供了許多字串處理函數, 讓程式設計師能夠省去做相同處理的時間 而今天我們就是要來介紹這些函數,

More information

第3章.doc

第3章.doc 3 3 3 3.1 3 IT Trend C++ Java SAP Advantech ERPCRM C++ C++ Synopsys C++ NEC C C++PHP C++Java C++Java VIA C++ 3COM C++ SPSS C++ Sybase C++LinuxUNIX Motorola C++ IBM C++Java Oracle Java HP C++ C++ Yahoo

More information

Python 與中文處理

Python 與中文處理 Python 與中文處理 Tseng Yuen-Hsien, 曾元顯 資訊中心 國立臺灣師範大學 2011/10/27 目錄 Python 與中文處理... 1 Python 與中文能否相處得來?... 1 中文編碼 :Python 內部表達方式 程式檔案 螢幕輸出... 1 中文編碼 : 輸入檔案 輸出檔案... 4 什麼時候用 encode() 什麼時候用 decode()... 5 如何知道某一個字串

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

Slide 1

Slide 1 Java 程式設計入門 講師 : 陳昭源 CSIE, NTU August 3, 2005 Outline Character & String Exercise August 3, 2005 Page 2 Character & String 處理字元資料時,Java 有三個類別可供使用 Character: 處理單一字元 String: 處理內容不改變 (immutable) 的字串 StringBuffer:

More information

C/C++ - 字符输入输出和字符确认

C/C++ - 字符输入输出和字符确认 C/C++ Table of contents 1. 2. getchar() putchar() 3. (Buffer) 4. 5. 6. 7. 8. 1 2 3 1 // pseudo code 2 read a character 3 while there is more input 4 increment character count 5 if a line has been read,

More information

新・解きながら学ぶC言語

新・解きながら学ぶC言語 330!... 67!=... 42 "... 215 " "... 6, 77, 222 #define... 114, 194 #include... 145 %... 21 %... 21 %%... 21 %f... 26 %ld... 162 %lf... 26 %lu... 162 %o... 180 %p... 248 %s... 223, 224 %u... 162 %x... 180

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

第二章 簡介類別

第二章  簡介類別 Instructor Hsueh-Wen Tseng 曾學文,hwtseng@nchu.edu.tw Textbook C++ 程式設計風格與藝術 (O Reilly). Requirements Assignment x? 100% TAs 第一章概觀 C++ 1-2 二種版本的 C++ 1-5 初步檢視類別 1-1 何謂物件導向程式設計 1-8 C++ 的關鍵字 1-2 二種版本的 C++ //

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

碩命題橫式

碩命題橫式 一 解釋名詞 :(50%) 1. Two s complement of an integer in binary 2. Arithmetic right shift of a signed integer 3. Pipelining in instruction execution 4. Highest and lowest layers in the TCP/IP protocol suite

More information

踏出C++的第一步

踏出C++的第一步 踏出 C++ 的第一步 講師 : 洪安 1 已經學會的 C 語言基本概念 基本資料型態 變數 基本輸入輸出 控制敘述 選擇控制 迴圈 陣列 函式 指標 字元與字串 結構 檔案處理 2 C v.s. C++ C 函數 程序式語言 Procedural language 結構化程式設計 Structured programming 演算法 Top-down C++ 類別 物件導向程式設計 Object-Oriented

More information

Microsoft PowerPoint - string_kruse [兼容模式]

Microsoft PowerPoint - string_kruse [兼容模式] Strings Strings in C not encapsulated Every C-string has type char *. Hence, a C-string references an address in memory, the first of a contiguous set of bytes that store the characters making up the string.

More information

!194 課程 大綱 陣列介紹 [P.195] 陣列的使 用 [1] - 多個同型變數 [P.196] 陣列的初始化 [P.198] 陣列的使 用 [2] - 循序存取 [P.199] 陣列的使 用 [3] - 隨機存取 [P.200] 陣列的複製 [P.203] 在函式間傳送陣列 [P.204]

!194 課程 大綱 陣列介紹 [P.195] 陣列的使 用 [1] - 多個同型變數 [P.196] 陣列的初始化 [P.198] 陣列的使 用 [2] - 循序存取 [P.199] 陣列的使 用 [3] - 隨機存取 [P.200] 陣列的複製 [P.203] 在函式間傳送陣列 [P.204] !193 第六講 陣列與字串 講師 : 李根逸 (Ken-Yi Lee), E-mail: feis.tw@gmail.com !194 課程 大綱 陣列介紹 [P.195] 陣列的使 用 [1] - 多個同型變數 [P.196] 陣列的初始化 [P.198] 陣列的使 用 [2] - 循序存取 [P.199] 陣列的使 用 [3] - 隨機存取 [P.200] 陣列的複製 [P.203] 在函式間傳送陣列

More information

實驗 使用 IPv4 和 IPv6 計算摘要路由 拓樸 位址分配表 子網 IPv4 位址 IPv6 位址 HQ 的 LAN / :DB8:ACAD:E::/64 HQ 的 LAN / :DB8:ACAD:F::/64 EAS

實驗 使用 IPv4 和 IPv6 計算摘要路由 拓樸 位址分配表 子網 IPv4 位址 IPv6 位址 HQ 的 LAN / :DB8:ACAD:E::/64 HQ 的 LAN / :DB8:ACAD:F::/64 EAS 拓樸 位址分配表 子網 IPv4 位址 IPv6 位址 HQ 的 LAN1 192.168.64.0/23 2001:DB8:ACAD:E::/64 HQ 的 LAN2 192.168.66.0/23 2001:DB8:ACAD:F::/64 EAST 的 LAN1 192.168.68.0/24 2001:DB8:ACAD:1::/64 EAST 的 LAN2 192.168.69.0/24 2001:DB8:ACAD:2::/64

More information

第二章 簡介類別

第二章  簡介類別 Instructor 曾學文 hwtseng@nchu.edu.tw http://wccclab.cs.nchu.edu.tw/www/index.php/c ourse/2017-03-20-07-38-21/105-105-2-c TA 王昱彬 第一章概觀 C++ 1-2 二種版本的 C++ 1-5 初步檢視類別 1-1 何謂物件導向程式設計 1-8 C++ 的關鍵字 1-2 二種版本的 C++

More information

Microsoft PowerPoint - ch04_AEL0080.ppt

Microsoft PowerPoint - ch04_AEL0080.ppt 4 選擇 在正常的情況下, 電腦程式的執行是以敘述的排列次序逐步處理的 使用控制架構 (control structures) 可以改變這種既定的先後次序, 讓程式得以進行更複雜的運算, 或以更簡潔的指令來實現演算法 1/42 選擇 4.1 演算法的描述方式 4.2 變數的運用範圍 (Scope of variables) 4.3 if- 敘述 4.4 巢狀 if- 敘述 (Nested if statements)

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

Excel VBA Excel Visual Basic for Application

Excel VBA  Excel Visual Basic for Application Excel VBA Jun5,00 Sub 分頁 () Dim i As Integer Dim Cname As String Dim Code As Variant Set score=thisworkbook.sheets("sheet") Code=Array(" 專北一 "," 專北二 "," 專北三 "," 專桃園 "," 專桃竹 "," 專中苗 ", " 專台中 "," 專台南 ","

More information

C/C++ - 函数

C/C++ - 函数 C/C++ Table of contents 1. 2. 3. & 4. 5. 1 2 3 # include # define SIZE 50 int main ( void ) { float list [ SIZE ]; readlist (list, SIZE ); sort (list, SIZE ); average (list, SIZE ); bargragh

More information

Microsoft PowerPoint - Class2.pptx

Microsoft PowerPoint - Class2.pptx C++ 程式初探 II 2015 暑期 C++ 程式 II 大綱 1. 變數 2. 運算式 3. 輸出 4. 條件判斷 5. 迴圈 6. 陣列 2 基本變數型態 整數 位元組 浮點數 位元組 字元 位元組 short 2 float 4 char ( 整數 ) 1 int 2 (4) double 8 long 4 (8) long double 8(10) 位元組 整數値域 浮點數値域 準確度 1-128

More information

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 TEMPLATE 1 Template 描述 使用模板函数求最大值 使用如下 main 函数对程序进行测试 int main() { double a, b; cin >> a >> b; cout c >> d; cout

More information

Learning by debugging

Learning by debugging Learning C by debugging 序言 這本書是我規劃 C 語言學習地圖的第三本 看完第一本的 樂在 C 語言 後, 希望您能在 戰勝 C 語言, 這也是本書取名的考量因素 同時在內容的深度與廣度上也加以擴大, 俾能對 C 有更進一步的了解 第三本是 精通 C/C++ 指標 期使您對 C 語言的核心主題 指標, 能更上一層樓 有人常問我學好程式設計的秘方是什麼, 其實沒有秘方, 只要在碰到有錯誤時

More information

Java 程式設計初階 第 5 章:基本輸出入 & 流程控制

Java 程式設計初階 第 5 章:基本輸出入 & 流程控制 Java 程式設計 標準輸出入與流程控制 本章大綱 標準輸出入 (Standard I/O) 分支 (Branch) if ~ else switch ~ case 迴圈 (Loop) for while do ~ while 中斷指令 break continue 總整理 標準輸出 定義 : 將資料印到螢幕上 Java 標準輸出指令 System.out.println( 資料 ) 將資料印出後換行

More information

<4D F736F F D DA5BFA6A1C476C1C92DBEC7ACECB8D5A8F728B57BB35D292E646F63>

<4D F736F F D DA5BFA6A1C476C1C92DBEC7ACECB8D5A8F728B57BB35D292E646F63> 全國高級中等學校 106 學年度商業類科學生技藝競賽 程式設計 職種 學科 試卷 選手證號碼 ( 崗位編號 ): 姓名 : 注意事項 : 請將答案劃記於答案卡, 未依規定劃記者不予計分 試題說明 :( 選擇題共 25 題每題 4 分, 答錯不倒扣, 共 100 分 ) ( )1. 執行以下 Visual Basic 程式片段, 其結果為何?(A) 15 (B) 12 (C) 7 (D) 3 Dim

More information

Microsoft Word - part doc

Microsoft Word - part doc 3 指標與陣列 3-1 指標與一維陣列 3-2 指標與二維陣列 3-3 陣列指標 3-4 為什麼 parr 等同於 *parr? 3-5 指向陣列的指標 3-6 多重指標 3-7 命令列引數 3-8 除錯題 3-9 問題演練 3-10 程式實作 32 Part 1 C 程式語言篇 指標其實就是一位址 陣列的名稱, 表示此陣列第一個元素的位址, 所以它也是指標 由此可知, 指標與陣列的關係是很密切的

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc Java C++ Pascal C# C# if if if for while do while foreach while do while C# 3.1.1 ; 3-1 ischeck Test() While ischeck while static bool ischeck = true; public static void Test() while (ischeck) ; ischeck

More information

Microsoft Word - Chap02.doc

Microsoft Word - Chap02.doc 標準的輸入與輸出 2-1 字元的輸出與輸入 2-2 格式化的輸出與輸入 2-3 摘要 2-4 關鍵字 2-5 問題演練 2-6 程式實作 i 上 C 語言 這一章我們將談論標準的輸入與輸出 (standard input/output) 所謂標準的輸入與輸出, 其作用端分別為鍵盤和螢幕 除了標準的輸入與輸出外,C 語言還提供檔案的輸入與輸出, 其作用端皆為檔案, 此部份留在第十一章 : 檔案, 再加以解說

More information

Microsoft PowerPoint - 04-array_pointer.ppt

Microsoft PowerPoint - 04-array_pointer.ppt Array 與 Pointer Array Dynamical Memory Allocation Array( 陣列 ) 陣列是用來存放同樣型態的資料陣列的大小必須在程式中預先設定在程式執行中, 陣列的大小無法改變陣列中的資料是透過索引 (index) 來存取 一維陣列的宣告 type array_name[array_size]; int iarray[100]; /* an integer array

More information

01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Fl

01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Fl 01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Flash 可以做精美的網路動畫並不陌生, 但是實際上 Flash 不僅如此, 只要搭配 ActionScript

More information

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc 2 5 8 11 0 1. 13 2. 15 3. 18 1 1. 22 2. 25 3. 27 2 1. 35 2. 38 3. 41 4. 43 5. 48 6. 50 3 1. 56 2. 59 3. 63 4. 65 5. 69 13 22 35 56 6. 74 7. 82 8. 84 9. 87 10. 97 11. 102 12. 107 13. 111 4 114 1. 114 2.

More information

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 1 CARDGAME 1 CardGame 题目描述 桌上有一叠牌, 从第一张牌 ( 即位于顶面的牌 ) 开始从上往下依次编号为 1~n 当至少还剩两张牌时进行以下操作 : 把第一张牌扔掉, 然后把新的第一张放到整叠牌的最后 请模拟这个过程, 依次输出每次扔掉的牌以及最后剩下的牌的编号 输入 输入正整数 n(n

More information

Microsoft Word - 4.doc

Microsoft Word - 4.doc 緩衝區管理 4.1 概念 : 緩衝區 指標以及位元組順序 4.2 緩衝區管理函數 ANSI C 技術手冊 4.1 概念 : 緩衝區 指標以及位元組順序 為了有效率地使用緩衝區 (buffer) 管理函數, 首先需要熟悉緩衝區 指標和位元組順序的概念 緩衝區 緩衝區是電腦記憶體中一組連續的位元組 緩衝區的內容可以是大多數函數所要處理的 ASCII 字元, 或是數值 如圖 4-1 所示, 緩衝區是藉由指向第一個位元組的指標來存取

More information

Java 程式設計入門

Java 程式設計入門 Java 程式設計入門 講師 : 陳昭源 CISE, NTU August 28, 2005 Outline 變數 Variables 運算子 Operators 運算式 (Expressions) 敘述(Statements) & 程式區塊 (Blocks) 流程控制 Control Flow Statements if-else statements switch statements August

More information

Microsoft PowerPoint - STU_C_Lang_CH13.ppt

Microsoft PowerPoint - STU_C_Lang_CH13.ppt 第 13 章 動態配置記憶體 程式設計與生活 - 使用 C 語言 Shi-Huang Chen Spring 2013 第 13 章 動態配置記憶體 13-1 記憶體配置函式 malloc( ) 13-2 動態配置結構陣列 配置記憶體 預估需求數量的範圍是一項不容易的學問 例 : 大到預估今年國家預算, 小到預估櫥窗裡展示的毛線衣, 需要多少磅毛線才能織成 撰寫程式時, 一樣無法預估程式執行所需的記憶體空間

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf("%d", &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf("%

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf(%d, &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf(% 2013 ( 28 ) ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 10 B 1 C 1 D 5 E 5 F 1 G II 5 H 30 1 2013 C 1 #include 2 int main(void) 3

More information

Microsoft Word - CPE考生使用手冊160524.docx

Microsoft Word - CPE考生使用手冊160524.docx 大 學 程 式 能 力 檢 定 (CPE) 考 生 使 用 手 冊 2016 年 5 月 24 日 這 份 手 冊 提 供 給 參 加 CPE 檢 定 考 試 的 考 生 內 容 包 含 考 試 環 境 的 使 用, 以 及 解 題 時 所 使 用 I/O 的 基 本 知 識 1. 如 欲 報 名 參 加 CPE 考 試, 請 先 於 CPE 網 站 完 成 帳 號 註 冊, 然 後 再 報 名 該

More information

4

4 練習 9A ( 9. 特殊角的三角比 T ( 在本練習中, 不得使用計算機 如有需要, 答案以根式或分數表示. 試完成下表 三角比 θ 0 4 60 sin θ cos θ tan θ 求下列各數式的值 (. cos 60. sin 4 4. tan 4. cos0 4 tan 0 7. sin 4 cos 4 8. cos 60 tan 4 9. tan 60sin 0 0. sin 60 cos

More information

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2 Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790

More information

C

C C 2017 3 14 1. 2. 3. 4. 2/95 C 1. 3/95 C I 1 // talkback.c: 2 #include 3 #include 4 #define DENSITY 62.4 5 int main(void) 6 { 7 float weight, volume; 8 int size; 9 unsigned long letters;

More information

運算子多載 Operator Overloading

運算子多載 Operator Overloading 多型 Polymorphism 講師 : 洪安 1 多型 編譯時期多型 ( 靜態多型 ) function overloading 如何正確呼叫同名的函數? 利用參數個數與型態 operator overloading 其實同 function overloading 執行時期多型 ( 或動態多型 ) 如何正確呼叫不同物件的相同名稱的成員函數 利用繼承與多型 2 子類別與父類別物件間的指定 (assignment)

More information

Microsoft PowerPoint - 20-string-s.pptx

Microsoft PowerPoint - 20-string-s.pptx String 1 String/ 1.: char s1[10]; char *s2; char s3[] = "Chan Tai Man"; char s4[20] = "Chan Siu Ming"; char s5[]={'h','e','l','l','o','\0'; 0 1 2 3 4 5 6 7 8 9 10 11 12 s3 C h a n T a i \0 M a n \0 printf

More information

46 2011 11 467 數位遊戲式學習系統 7 2011 11 467 47 3 DBGameSys 48 2011 11 467 正規化資料模組 如何配置並儲存電子化資料 以 便減少資料被重覆儲存的程序 DBGameSys的主要功能模組包 學習者 審核評分模組 含 正規化資料模組 審核評分 模組 高分列表模組3大區塊 系統資料庫 在正規化資料模組的執行 高分列表模組 過程中 先要求學習者瀏覽遊戲

More information

北京大学

北京大学 1 string 类 郭炜刘家瑛 北京大学程序设计实习 string 类 string 类是一个模板类, 它的定义如下 : typedef basic_string string; 使用 string 类要包含头文件 string 对象的初始化 : string s1("hello"); // 一个参数的构造函数 string s2(8, x ); // 两个参数的构造函数

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

5. 閱 讀 下 文, 推 斷 內 最 適 合 填 入 的 詞 語 依 序 為 何? 人 也 真 是 一 個 絕 字, 一 邊 向 左, 一 邊 向 右, 一 副 的 樣 子, 偏 又 相 連 著, 各 說 各 話 各 走 各 路, 卻 又 人, 這 麼 一 個 簡 單 的 字, 竟 包 含 如 此

5. 閱 讀 下 文, 推 斷 內 最 適 合 填 入 的 詞 語 依 序 為 何? 人 也 真 是 一 個 絕 字, 一 邊 向 左, 一 邊 向 右, 一 副 的 樣 子, 偏 又 相 連 著, 各 說 各 話 各 走 各 路, 卻 又 人, 這 麼 一 個 簡 單 的 字, 竟 包 含 如 此 103 學 年 度 四 技 二 專 統 一 入 學 測 驗 國 文 試 題 一 選 擇 題 ( 一 ) 綜 合 測 驗 20 題 1. 下 列 各 組 內 的 字, 何 者 讀 音 不 同? (A) 諮 諏 善 道 / 渡 大 海, 入 荒 陬 (B) 傴 僂 提 攜 / 嘔 啞 嘲 哳 難 為 聽 (C) 跫 音 不 響 / 秋 蟬 兒 噪 罷 寒 蛩 兒 叫 (D) 形 容 枯 槁 / 阿 縞

More information

Microsoft PowerPoint - Class4.pptx

Microsoft PowerPoint - Class4.pptx C++ 程式初探 IV 2015 暑期 ver. 1.0.2 C++ 程式 IV 大綱 1. 時間函式 2. 格式化輸出 3. 遞迴函式 (recursion) 4. 字串 5. 字串轉型 2 補充語法 時間計算 引入標頭檔 #include #include #include #include using namespace

More information

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp 01 1.6 Spyder Anaconda Spyder Python Spyder Python Spyder Spyder 1.6.1 Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Spyder Python File

More information

Microsoft PowerPoint - C-Ch10.ppt

Microsoft PowerPoint - C-Ch10.ppt 了解陣列元素的位址 陣列 指標的應用 10-1 陣列與指標的關係 可以使用位址運算子 (&) 來查詢陣列中各個元素的位址 &test[0] 這行表示陣列最前面元素的位址 &test[1] 這行表示陣列第二個元素的位址 關於陣列名稱的機制 陣列名稱可以表示陣列最前面元素的位址 #include int main(void) int test[5] = 80,60,55,22,75;

More information

投影片 1

投影片 1 NCKU Progrmming Contest Trining Course 08/05/09 Jheng-Hung Hong Deprtment of Computer Siene nd Informtion Engineering Ntionl Cheng Kung University Tinn, Tiwn NCKU CSIE Progrmming Contest Trining Course

More information

C/C++ Programming

C/C++ Programming 265 第九講 結構 講師 : 李根逸 (Ken-Yi Lee), E-mail: feis.tw@gmail.com 266 課程 大綱 結構 (struct) 結構宣告 [P.267] 結構定義 [P.268] 結構變數宣告 [P.269] 結構變數的初始化 [P.272] 存取結構成員 [P.244] 傳送 大型資料型態參數 [P.277] 267 結構宣告 結構是 一種衍 生的 自訂資料型態,

More information

本章內容 2-1 陣列及陣列位址的計算一維陣列位址計算多維陣列位址計算 2-2 一維陣列的基本運算讀取 寫入 複製 輸出 插入資料 刪除 2-3 二維陣列及矩陣的儲存與運算矩陣輸出 矩陣轉置 矩陣相加 矩陣相乘 2-4 字串 ( 字元陣列 ) 計算字串長度 字串複製 字串比較 子字串擷取 2

本章內容 2-1 陣列及陣列位址的計算一維陣列位址計算多維陣列位址計算 2-2 一維陣列的基本運算讀取 寫入 複製 輸出 插入資料 刪除 2-3 二維陣列及矩陣的儲存與運算矩陣輸出 矩陣轉置 矩陣相加 矩陣相乘 2-4 字串 ( 字元陣列 ) 計算字串長度 字串複製 字串比較 子字串擷取 2 第二章 Array 版權屬作者所有, 非經作者同意不得用於教學以外用途 1 本章內容 2-1 陣列及陣列位址的計算一維陣列位址計算多維陣列位址計算 2-2 一維陣列的基本運算讀取 寫入 複製 輸出 插入資料 刪除 2-3 二維陣列及矩陣的儲存與運算矩陣輸出 矩陣轉置 矩陣相加 矩陣相乘 2-4 字串 ( 字元陣列 ) 計算字串長度 字串複製 字串比較 子字串擷取 2 2-1 陣列及陣列位址的計算 陣列

More information