一基礎知識題
簡述下列每對術語的區別
空串和空白串串常量和串變量主串和子串靜態分配的順序串和動態分配的順序串目標串和模式串有效位移和無效位移
假設有如下的串說明
char s[]=StocktomCA s[]=March s[] *p;
()在執行如下的每個語句後p的值是什麼?
p=stchr(st); p=strchr(s); p=strchr(s);
()在執行下列語句後s的值是什麼?
strcpy(ss); strcat(s); strcat(ss);
()調用函數strcmp(ss)的返回值是什麼?
()調用函數strcmp(&s[]ton)的返回值是什麼?
()調用函數stlen(strcat(ss))的返回值是什麼?
設T[n]=adaabaabcaabaaP[m]=aab當用模式串匹配目標串T時請給出所有的有效位移算法NaiveStrMatch(TP)返回的位移是哪一個位移
二算法設計題
利用C的庫函數strlenstrcpy和strcat寫一算法void StrInsert(char *S char *T int i)將串T插入到串S的第i個位置上若i大於S的長度則插入不執行
利用C的庫函數strlen 和strcpy(或strncpy)寫一算法void StrDelete(char *Sint i int m)刪去串S中從位置i開始的連續m個字符若i≥strlen(S)則沒有字符被刪除若i+m≥strlen(S)則將S中從位置i開始直至末尾的字符均刪去
以HString為存儲表示寫一個求子串的算法
一個文本串可用事先給定的字母映射表進行加密例如設字母映射表為
a b c d e f g h i j k l m n o p q r s t u v w x y z
n g z q t c o b m u h e l k p d a w x f y i v r s j
則字符串encrypt被加密為tkzwsdf試寫一算法將輸入的文本串進行加密後輸出另寫一算法將輸入的已加密的文本串進行解密後輸出
寫一算法void StrReplace(char *T char *P char *S)將T中首次出現的子串P替換為串S注意S和P的長度不一定相等可以使用已有的串操作
將NaveStrMatch改寫為輸出目標串中所有與模式串匹配的有效位移
* 利用的結果寫一算法void StrReplaceAll(char *T char *P char *S)將T中出現的所有與P相等的不重疊子串替換為S這裡S和P的長度不一定相等
若S和T是用結點大小為的單鏈表存儲的兩個串試設計一個算法找出S中第一個不在T中出現的字符
From:http://tw.wingwit.com/Article/program/sjjg/201311/23980.html