admin 管理员组文章数量: 1184232
2024年4月22日发(作者:linux如何退出vi)
数据结构 串和数组 试题及答案
一、填空题
1. 不包含任何字符(长度为0)的串 称为空串; 由一个或多
个空格(仅由空格符)组成的串 称为空白串。
(对应严题集4.1①,简答题:简述空串和空格串的区别)
2. 设S=“A:/document/”,则strlen(s)= 20 , “/”
的字符定位的位置为 3 。
4. 子串的定位运算称为串的模式匹配; 被匹配的主串 称为目标
串, 子串 称为模式。
5. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第 6 次匹配
成功。
6. 若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的
情况下需要比较字符的总次数为 (n-m+1)*m 。
7. 假设有二维数组A
6×8
,每个元素用相邻的6个字节存储,存储器按
字节编址。已知A的起始存储位置(基地址)为1000,则数组A的体积
(存储量)为 288 B ;末尾元素A
57
的第一个字节地址为
1282 ;若按行存储时,元素A
14
的第一个字节地址为 (8+4)×
6+1000=1072 ;若按列存储时,元素A
47
的第一个字节地址为 (6×7
11
+4)×6+1000)=1276 。
(注:数组是从0行0列还是从1行1列计算起呢?由末单元为A
57
可知,
是从0行0列开始!)
8. 〖00年计算机系考研题〗设数组a[1…60, 1…70]的基地址为2048,
每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]
的存储地址为 8950 。
答:不考虑0行0列,利用列优先公式: LOC(a
ij
)=LOC(a
c
1,
c
2
)+[(j-c
2
)*(d
1
-c
1
+1)+i-c
1
)]*L
得:LOC(a
32,58
)=2048+[(58-1)*(60-1+1)+32-1]]*2=8950
9. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含
有三个数据项,分别表示该元素
的 行下标 、 列下标 和 元素值 。
10.求下列广义表操作的结果:
(1) GetHead【((a,b),(c,d))】=== (a, b) ; //头元
素不必加括号
(2) GetHead【GetTail【((a,b),(c,d))】】=== (c,d) ;
(3) GetHead【GetTail【GetHead【((a,b),(c,d))】】】=== b ;
(4) GetTail【GetHead【GetTail【((a,b),(c,d))】】】=== (d) ;
二、单选题
11
( B )1. 串是一种特殊的线性表,其特殊性体现在:
A.可以顺序存储 B.数据元素是一个字符
C.可以链式存储 D.数据元素可以是多个字符
( B )2. 设有两个串p和q,求q在p中首次出现的位置的运算称
作:
A.连接 B.模式匹配 C.求子串 D.求串长
( 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
解:con(x,y)返回x和y串的连接串,即 con(x,y)=‘ABCDEFGPQRST’;
subs(s, i, j)返回串s的从序号i开始的j个字符组成的子串,则
subs(s1, 2, len(s2))=subs(s1, 2, 5)=’ BCDEF’; subs(s1,
len(s2), 2)=subs(s1, 5, 2)=’ EF’;
所以con(subs(s1, 2, len(s2)), subs(s1, len(s2), 2))=con(’
BCDEF’, ’ EF’)之连接,即BCDEFEF
( A )4. 〖01年计算机系考研题〗假设有60行70列的二维数组a[1…
60, 1…70]以列序为主序顺序存储,其基地址为10000,每个元素占2
个存储单元,那么第32行第58列的元素a[32,58]的存储地址为 。
11
(无第0行第0列元素)
A.16902 B.16904 C.14454 D.答案A, B, C均不
对
答:此题与填空题第8小题相似。(57列×60行+31行)×2字节+
10000=16902
( B )5. 设矩阵A是一个对称矩阵,为了节省存储,将其下三角部
分(如下图所示)按行序存放在一维数组B[ 1, n(n-1)/2 ]中,对下三
角部分中任一元素a
i,j
(i≤j), 在一维数组B中下标k的值是:
解:注意B的下标要求从1开始。
先用第一个元素去套用,可能有B和C;
再用第二个元素去套用B和C,B=2而C=3(不符);
所以选B
a
1,1
aa
2,12,2
A
aa
a
n,1n,2n,n
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 。
11
供选择的答案:
A~E:①28 ② 44 ③ 76 ④ 92 ⑤ 108
⑥ 116 ⑦ 132 ⑧ 176 ⑨ 184 ⑩ 188
答案:ABCDE=8, 3, 5, 1, 6
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
答案:ABCD=12, 10, 3, 9
三、简答题
1.已知二维数组Am,m采用按行优先顺序存放,每个元素占K个存储单
元,并且第一个元素的存储地址为Loc(a11),请写出求Loc(aij)的计算
公式。如果采用列优先顺序存放呢?
解:公式教材已给出,此处虽是方阵,但行列公式仍不相同;
按行存储的元素地址公式是: Loc(aij)= Loc(a11) +[ (i-1)*m+(j-1) ]
11
* K
按列存储的元素地址公式是: Loc(aij)= Loc(a11) +[ (j-1)*m+(i-1) ]
* K
2.【全国专升本资格考试】递归算法比非递归算法花费更多的时间,对
吗?为什么?
答:不一定。时间复杂度与样本个数n有关,是指最深层的执行语句耗
费时间,而递归算法与非递归算法在最深层的语句执行上是没有区别的,
循环的次数也没有太大差异。仅仅是确定循环是否继续的方式不同,递
归用栈隐含循环次数,非递归用循环变量来显示循环次数而已。
四、计算题
设s=’I AM A STUDENT’, t=’GOOD’, q=’WORKER’, 求Replace(s,’
STUDENT’,q) 和
Concat(SubString(s,6,2), Concat(t,SubString(s,7,8)))。
解:① Replace(s,’STUDENT’,q)=’I AM A WORKER’
② 因为 SubString(s,6,2)=‘A ’;SubString(s,7,8)=‘ STUDENT’
Concat(t,SubString(s,7,8))=’GOOD STUDENT’
所以Concat(SubString(s,6,2), Concat(t,SubString(s,7,8)))=‘A
GOOD STUDENT’
2. (P60 4-18)用三元组表表示下列稀疏矩阵:
11
版权声明:本文标题:数据结构 串与数组 试题及答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1713763178a650395.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论