第4~5章串和数组自测卷 姓名 班级 题号 四 总分 题分20 得分 、填空题(每空1分,共20分) 称为空串; 称为空白串 2.设S=“A;/ document/mary.doc”,则 strlen(s)= “的字符定位的位置为 4.子串的定位运算称为串的模式匹配; 称为目标串,称为模式 5.设目标I=” abccdedecbaa”,模式P=“cdc”,则第次匹配成功 6.若n为主串长,m为子串长则串的古典匹配算法最坏的情况下需要比较字符的总次数为 假设有二维数组A6x8,每个元紊用相邻的6个字节存储,存储器按字节编址。已知A的起始存储位置 (基地址)为1000则数组A的体积(存储量)为;末尾元素As的第一个字节地址为 若按行存储时,元素A14的第一个字节地址为 若按列存储时,元素A4的第一个字节地址 为 8.设数组a1…60,1…70的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元 素a|3258的存储地址为 9三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素 和 10求下列广义表操作的结果: (1) GetHead【(a,b),c,d)】 (2) GetHead【 GetTail【(a,b),c,d)】 (3) Gethead【 GetTail【 Gethead【(a,b),cd)】】 (4) GetTailGetHead【 GetTail【(a,b),(c,d)】】== 单选题(每小题1分,共15分) )1.串是一种特殊的线性表,其特殊性体现在: A.可以顺序存储 B.数据元素是一个字符 C.可以链式存储 D.数据元素可以是多个字符 )2.设有两个串p和q,求q在p中首次出现的位置的运算称作: A.连接B.模式匹配C.求子串 D.求串长 ()3.设串sl=' ABCDEFG’,s2= PQRST',函数con(xy)返回x和y串的连接串,subs(sij返回 串s的从序号i开始的个字符组成的子串,len(s返回串s的长度,则con(subs(sl,2,len(s2),subs(s,len(s2) 2)的结果串是 A. BCDEF B. BCDEFG C. BCPQRST D. BCDEFEF
1 第 4~5 章 串和数组 自测卷 姓名 班级 题号 一 二 三 四 五 总分 题分 20 15 20 15 30 100 得分 一、填空题(每空 1 分,共 20 分) 1. 称为空串; 称为空白串。 2. 设 S=“A;/document/Mary.doc”,则 strlen(s)= , “/”的字符定位的位置为 。 4. 子串的定位运算称为串的模式匹配; 称为目标串, 称为模式。 5. 设目标 T=”abccdcdccbaa”,模式 P=“cdcc”,则第 次匹配成功。 6. 若 n 为主串长,m 为子串长,则串的古典匹配算法最坏的情况下需要比较字符的总次数为 。 7. 假设有二维数组 A6×8,每个元素用相邻的 6 个字节存储,存储器按字节编址。已知 A 的起始存储位置 (基地址)为 1000,则数组 A的体积(存储量)为 ;末尾元素 A57的第一个字节地址为 ; 若按行存储时,元素 A14 的第一个字节地址为 ;若按列存储时,元素 A47的第一个字节地址 为 。 8. 设数组 a[1…60, 1…70]的基地址为 2048,每个元素占 2 个存储单元,若以列序为主序顺序存储,则元 素 a[32,58]的存储地址为 。 9. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素 的 、 和 。 10.求下列广义表操作的结果: (1) GetHead【((a,b),(c,d))】=== ; (2) GetHead【GetTail【((a,b),(c,d))】】=== ; (3) GetHead【GetTail【GetHead【((a,b),(c,d))】】】=== ; (4) GetTail【GetHead【GetTail【((a,b),(c,d))】】】=== ; 二、单选题(每小题 1 分,共 15 分) ( )1. 串是一种特殊的线性表,其特殊性体现在: A.可以顺序存储 B.数据元素是一个字符 C.可以链式存储 D.数据元素可以是多个字符 ( )2. 设有两个串 p 和 q,求 q 在 p 中首次出现的位置的运算称作: A.连接 B.模式匹配 C.求子串 D.求串长 ( )3. 设串 s1=’ABCDEFG’,s2=’PQRST’,函数 con(x,y)返回 x 和 y 串的连接串,subs(s, i, j)返回 串 s的从序号 i开始的j个字符组成的子串,len(s)返回串 s的长度,则 con(subs(s1, 2, len(s2)), subs(s1, len(s2), 2))的结果串是: A.BCDEF B.BCDEFG C.BCPQRST D.BCDEFEF
()4.假设有60行70列的二维数组a1…60,1…70以列序为主序顺序存储,其基地址为1000 每个元素占2个存储单元,那么第32行第58列的元素a|3258的存储地址为。(无第0行第0列元 素 A.16902B.16904 c.14454 D.答案A,B,C均不对 ()5设矩阵A是一个对称矩阵,为了节省存储,将其下三角部分(如 右图所示)按行序存放在一维数组B1,m(n-1)2中,对下三角部分中任 元素a(i≤j,在一维数组B中下标k的值是 A.i(i-1)/2+j1 i(i-12 C·i(i+1)2+j D.i(i+1)2+j 6.从供选择的答案中,选出应填入下面叙述?内的最确切的解答,把相应编号写在答卷的对应栏 内 有一个二维数组A,行下标的范围是0到8,列下标的范围是1到5,每个数组元素用相邻的4个字 节存储。存储器按字节编址。假设存储数组元素A|0,1的第一个字节的地址是0 存储数组A的最后一个元素的第一个字节的地址是 。若按行存储,则A35和A5,3的第一个字 节的地址分别是B和C。若按列存储,则A[7,1|和A|2,4的第一个字节的地址分别是D和 供选择的答案 A~E:①28②44⑧76④9⑤108⑥11⑦132⑧176@184⑩18 答案:A 从供选择的答案中,选出应填入下面叙述?内的最确切的解答,把相应编号写在答卷的对应栏 内 有一个二维数组A,行下标的范围是1到6,列下标的范围是0到7,每个数组元素用相邻的6个字 节存储,存储器按字节编址。那么,这个数组的体积是A个字节。假设存储数组元素A10的第 个字节的地址是0,则存储数组A的最后一个元素的第一个字节的地址是B。若按行存储,则A|2,4 的第一个字节的地址是_C。若按列存储,则A5,的第一个字节的地址是D 供选择的答案 A~D:①12②66⑧72④9⑤114⑥120⑦156⑧234⑨276⑩282(11)283(12)288 答案:A= 三、简答题(每小题5分,共15分) 1.已知二维数组Am,m果用按行优先顺序存放,每个元素占K个存储单元,并且第一个元素的存储地址 为Loc(a1),请写出求Loc(ai)的计算公式。如果采用列优先顺序存放呢? 2.递归算法比非递归算法花费更多的时间,对吗?为什么?
2 ( )4. 假设有 60 行 70 列的二维数组 a[1…60, 1…70]以列序为主序顺序存储,其基地址为 10000, 每个元素占 2 个存储单元,那么第 32 行第 58 列的元素 a[32,58]的存储地址为 。(无第 0 行第 0 列元 素) A.16902 B.16904 C.14454 D.答案 A, B, C 均不对 ( ) 5. 设矩阵 A 是一个对称矩阵,为了节省存储,将其下三角部分(如 右图所示)按行序存放在一维数组 B[ 1, n(n-1)/2 ]中,对下三角部分中任一 元素 ai,j(i≤j), 在一维数组 B 中下标 k 的值是: A.i(i-1)/2+j-1 B.i(i-1)/2+j C.i(i+1)/2+j-1 D.i(i+1)/2+j 6. 从供选择的答案中,选出应填入下面叙述 ? 内的最确切的解答,把相应编号写在答卷的对应栏 内。 有一个二维数组 A,行下标的范围是 0 到 8,列下标的范围是 1 到 5,每个数组元素用相邻的 4 个字 节存储。存储器按字节编址。假设存储数组元素 A[0,1]的第一个字节的地址是 0。 存储数组 A 的最后一个元素的第一个字节的地址是 A 。若按行存储,则 A[3,5]和 A[5,3]的第一个字 节的地址分别是 B 和 C 。若按列存储,则 A[7,1]和 A[2,4]的第一个字节的地址分别是 D 和 E 。 供选择的答案 A~E:①28 ② 44 ③ 76 ④ 92 ⑤ 108 ⑥ 116 ⑦ 132 ⑧ 176 ⑨ 184 ⑩ 188 答案:A= B= C= D= E= 7. 从供选择的答案中,选出应填入下面叙述 ? 内的最确切的解答,把相应编号写在答卷的对应栏 内。 有一个二维数组 A,行下标的范围是 1 到 6,列下标的范围是 0 到 7,每个数组元素用相邻的 6 个字 节存储,存储器按字节编址。那么,这个数组的体积是 A 个字节。假设存储数组元素 A[1,0]的第一 个字节的地址是 0,则存储数组 A 的最后一个元素的第一个字节的地址是 B 。若按行存储,则 A[2,4] 的第一个字节的地址是 C 。若按列存储,则 A[5,7]的第一个字节的地址是 D 。 供选择的答案 A~D:①12 ②66 ③72 ④96 ⑤114 ⑥120 ⑦156 ⑧234 ⑨276 ⑩282 (11)283 (12)288 答案:A= B= C= D= E= 三、简答题(每小题 5 分,共 15 分) 1. 已知二维数组 Am,m 采用按行优先顺序存放,每个元素占 K 个存储单元,并且第一个元素的存储地址 为 Loc(a11),请写出求 Loc(aij)的计算公式。如果采用列优先顺序存放呢? 2. 递归算法比非递归算法花费更多的时间,对吗?为什么? = an an an n a a a A ,1 ,2 , 2,1 2,2 1,1
四、计算题(每题5分,共20分) 1.【严题集43①】设s= ' STUDENt’,t=`GOOD,q= WORKER’, ER Replace(s,'STUDENT, q) N Concat(SubString(s, 6, 2 ), Concat(t, SubString(s, 7, 8) 2.用三元组表表示下列稀疏矩阵: 00000000 00000000 00000-2 03000800 000090 00000000 000000 00060000 005000 00000000 000000 00000005 000030 20000000 3.下列各三元组表分别表示一个稀疏矩阵,试写出它们的稀疏矩阵 646 122 455 2112 249 (1)313 328 444 356 536 437 6116 五、算法设计题(每题10分,共30分) 【严题集412③】编写一个实现串的置换操作 Replace(&S,T)的算法
3 四、计算题(每题 5 分,共 20 分) 1. 【严题集 4.3①】设 s=’I AM A STUDENT’, t=’GOOD’, q=’WORKER’, 求 Replace(s,’STUDENT’,q) 和 Concat(SubString(s,6,2), Concat(t,SubString(s,7,8)))。 2. 用三元组表表示下列稀疏矩阵: 20000000 00000005 00000000 00060000 00000000 03000800 00000000 00000000 (1) − 00003 0 00000 0 00500 0 00000 0 00009 0 00000 2 (2) 3. 下列各三元组表分别表示一个稀疏矩阵,试写出它们的稀疏矩阵。 6 116 5 3 6 4 4 4 3 1 3 2 1 12 1 2 2 6 4 6 (1) 4 3 7 3 5 6 3 2 8 2 4 9 111 4 5 5 (2) 五、算法设计题(每题 10 分,共 30 分) 1. 【严题集 4.12③】 编写一个实现串的置换操作 Replace(&S, T, V)的算法
2.【严题集518⑥】试设计一个算法,将数组An中的元素A|0侄至An-1循环右移k位,并要求只用一 个元素大小的附加存储,元素移动或交换次数为O(m) 附加题:利用C的库函数 strlen, stripy(或 strncpy)写一个算法 void StrDelete(char*S, int t, int m),删 除串S中从位置i开始的连续的m个字符。若诊 strlen(S),则没有字符被删除;若计m≥ strlen(S),则将 S中从位置开始直至末尾的字符均被删去。 提示: strlen是求串长〔 ength)函数: int strlen( char s//求串的长度 strcpy是串复制(copy)函数:char* strcpy( char to char from)//该函数将串frm复制到串 to中,并且返回一个指向串to的开始处的指针
4 2. 【严题集 5.18⑤】试设计一个算法,将数组 An 中的元素 A[0]至 A[n-1]循环右移 k 位,并要求只用一 个元素大小的附加存储,元素移动或交换次数为 O(n) 附加题: 利用 C 的库函数 strlen, strcpy(或 strncpy)写一个算法 void StrDelete(char *S,int t,int m) ,删 除串 S 中从位置 i 开始的连续的 m 个字符。若 i≥strlen(S),则没有字符被删除;若 i+m≥strlen(S),则将 S 中从位置 i 开始直至末尾的字符均被删去。 提示:strlen 是求串长(length)函数:int strlen(char s); //求串的长度 strcpy 是串复制(copy)函数:char *strcpy(char to,char from); //该函数将串 from 复制到串 to 中,并且返回一个指向串 to 的开始处的指针