串和数组自测题

来源:互联网 发布:恢复mac上icloud数据 编辑:程序博客网 时间:2024/05/22 17:35

一、填空题

1.  不包含任何字符(长度为0)的串 称为空串;  由一个或多个空格(仅由空格)组成的串   称为空白串。

2. S=A;/document/Mary.doc”,则strlen(s)=  20  , “/”的字符定位的位置为  3  

4. 子串的定位运算称为串的模式匹配;   被匹配的串  称为目标串,   子串   称为模式。

5. 设目标T=”abccdcdccbaa”,模式P=cdcc”,则第  6  次匹配成功。

6. n为主串长,m为子串长,则串的古典匹配算法最坏的情况下需要比较字符的总次数为  (n-m+1)*m  

7. 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A的起始存储位置(基地址)为1000,则数组A的体积(存储量)为   288B   ;末尾元素A57的第一个字节地址

   1282   ;若按行存储时,元素A14的第一个字节地址为   (8+4)*6+1000=1072     ;若按列存储时,元素A47的第一个字节地址为  (6*7+4)*6+1000=1276   

(注意审题,理解数组是从00列开始的还是从11列开始的,由末尾元素57可知是从00列开始的)

8. 设数组a[160, 170]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为  57*60+31*2+2048=8950  

9. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素

  行下标      列下标      元素值  

10. 求下列广义表操作的结果:

1 GetHead((a,b),(c,d))===       (a,b)    ;      

2 GetHeadGetTail((a,b),(c,d))】】===    (c,d)   ;

3 GetHeadGetTailGetHead((a,b),(c,d))】】】===    b  ;

4 GetTailGetHeadGetTail((a,b),(c,d))】】】===   (d)    ;

做此题注意: GetHead( L) ——取表头(可能是原子或列表); GetTail(L )   ——取表尾(一定是列表) 。

例如:

二、单选题

 D  )1.  串是一种特殊的线性表,其特殊性体现在:

   A.可以顺序存储        B.数据元素可以是多个字符     

C.可以链式存储        D.数据元素是一个字符

(  B  )2.  设有两个串pq,求qp中首次出现的位置的运算称作:

   A.连接      B.模式匹配    C.求子串       D.求串长

(  D  )3.  设串s1=’ABCDEFG’s2=’PQRST’,函数con(x,y)返回xy串的连接串,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

(  A  )4.  假设有6070列的二维数组a[160, 170]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为      。(无第0行第0列元素)

  A.16902    B.16904      C.14454       D.答案A, B, C均不对

(解题:(57*60+31)*2+1000=16902)

(  B  ) 5. 设矩阵A是一个对称矩阵,为了节省存储,将其下三角部分(如右图所示)按行序存放在一维数组B[ 1, n(n-1)/2 ]中,对下三角部分中任一元素ai,j(ij), 在一维数组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,行下标的范围是08,列下标的范围是15,每个数组元素用相邻的4个字节存储。存储器按字节编址。假设存储数组元素A[0,1]的第一个字节的地址是0

存储数组A的最后一个元素的第一个字节的地址是   A   。若按行存储,则A[3,5]A[5,3]的第一个字节的地址分别是  B     C   。若按列存储,则A[7,1]A[2,4]的第一个字节的地址分别是  D     E   

供选择的答案

AE:①28    44    76    92     108    116    132    176     184    188

答案:A      B        C          D         E=  

7. 从供选择的答案中,选出应填入下面叙述   ?   内的最确切的解答,把相应编号写在答卷的对应栏内。

有一个二维数组A,行下标的范围是16,列下标的范围是07,每个数组元素用相邻的6个字节存储,存储器按字节编址。那么,这个数组的体积是   A   个字节。假设存储数组元素A[1,0]的第一个字节的地址是0,则存储数组A的最后一个元素的第一个字节的地址是   B   。若按行存储,则A[2,4]的第一个字节的地址是  C   。若按列存储,则A[5,7]的第一个字节的地址是  D   

供选择的答案

AD:①12  66  72  96  114  120  156  234  276   282   (11)283  12288

答案:A 12     B 10       C 3       D 9      

三、计算题

  1. 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. 已知主串s=’ADBADABBAABADABBADADA’,模式串pat=’ADABBADADA。写出模式串的nextval函数值,并由此画出KMP算法匹配的全过程。  

  模式串  :  ADABBADADA

    next:   0112112341

nextval:  0102101040

3.  用三元组表表示下列稀疏矩阵:

参见填空题4. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的行下标、  列下标和元素值 。

4. 下列各三元组表分别表示一个稀疏矩阵,试写出它们的稀疏矩阵。

四、算法设计题

  1. 编写一个实现串的置换操作Replace (&S, T, V)的算法。

  1. 写出将字符串反序的递推或递归算法,例如字符串为“abcsxw”,反序为“wxscba






2 0
原创粉丝点击