一、名词解释 (1) 字符串 (2) 空白串 (3) 空串 (4) 顺序串 (5) 链式串 (6) 模式匹配
二、判断题(下列各题,正确的请在前面的括号内打“√”;错误的打“╳”)
( )(1)串的长度是指串中不同字符的个数。 ( )(2)串是N个字母的有限序列。 ( )(3)空串不等于空白串。 ( )(4)如果两个串含相同的字符,则说明它们相等。 ( )(5)如果一个串中相同的字符均在另一个串中出现,则说明前者是后者的子串。 ( )(6)串的堆分配存储是一种动态存储结构。 三.填空题
1、设两个字符串分别为:
2、通常在程序中使用的字符串可分为串常量和串变量;而字符串按存储方式又可分为 、 和 等几种。
3、串和顺序存储 格式,一个存储单元只存放字符串中的一个字符,其缺点是 。
4、串的接存储紧凑格式优点是 ,缺点是 。 5、串连接存储优点是 ,缺点是 。
6、两个串相等的成分必要条件是 。
7、设S=”A:/Document/Mary.Doc”,则LenStr(s)= ,”/”的分微 定位的位置为 。 8、子串的定位运算成为串的模式匹配: 成为目标串, 称为模式。
9、 称为有效位移, 称为无效位移。 10、设目标T=”abccdcdccbaa”,模式p=”cdcc”,则第 次匹配成功。 四.选择题
1. 串是一种特殊的线性表,其特殊体现在( )。
A. 可以顺序存储 B、数据元素是以个字符
C、可以链接存储 D、数据元素可以是多个字符 2. 设有两个串p和q,求q在p中首次出现的位置的运算称作( )
A.链接 B、模式匹配 C、求子串 D、求串长
3.设两个字符串的串值分别为s1=”ABCDEFG”,S2=”PQRST”, 则
ConcatStr(SubStr(s1,2,LenStr(s2)),SubStr(s1,LenStr(s2),2))的结果串( ) A、BCDEF B、BCDEFG C、BDPQRST D、BCDEFEF 4、 串是( )
A、不少于一个字母的序列 B、任意个字符的序列 C、不少与一个字符的序列 D、有限个字符的序列
5、 设有两个串s1和s2,求s2在s1中首次出现的位置的运算是( ) A、串链接 B、求子串 C、模式匹配 D、串比较 6、 以下李、论断正确的是( )
A、” ” 是空串 ,” ”是空格串 B、”beijing”是”bei jing”的子串 C、”something”<” Something” D、”BIT”==”BITE” 7、 若字符串”ABCDEFG”采用链式存储,假设每个字符占用1个字节,每个指针占用2个字节。
则该字符串的存储密度为( )
A、20% B、40% C、50% D、33.3%
8. 上题若需提高存储密度至50%,则每个结点应存储( )个字符(假设字符串的结束标志也占用1个字节)
A、2 B、3 C、4 D、5
9、 某串的长度小于一个常数,则采用( )存储方式最节省空间。
A、链式 B、顺序 C、 堆结构 D、无法确定
10、在实际应用中,要输入多个字符串,且长度无法预定,则应该采用( )存储方式比较合
适。
A、链式 B、顺序 C、 堆结构 D、无法确定 五.编程题
1. 设下面所用的串均采用顺序存储方式,其存储结构定义如下,请编写下列算法: # define MAXLEN 100 typedef struct
{ char vec[MAXLEN]; int len; }str;
(1) 将串r中所有值为ch1的字符换成ch2的字符。 (2) 将串r中所有字符按照襄樊的次序存放在r 中。 (3) 从串r中删除其值等于ch的所有字符。
(4) 从串r1中第index 个字符起求出首次与字符r2相同的子串的起始位置。 (5) 从串r中删除所有与串r3相同的子串(允许调用第4小题的函数)。 (6) 编写一个比较x和y两个串是否相等的函数。
2. 设计一个算法,判断字符串是否为回文(即正读和倒读相同)。 3. 设计一个算法,从字符串中删除所有与字符串”del”相同的子串。 4. 设计一个算法,统计字符串中否定词”not”的个数。
因篇幅问题不能全部显示,请点此查看更多更全内容