第四章 串52440

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章串一、选择题

1.下列有关字符串的描述,正确的是()

字符串是0个或多个字符构成的有限序列;

字符串是0个或多个字母不同的有限序列;

字符串中最少要有一个子符;

字符串中不能有空格字符。

字符串S="string"中,包含的子串的个数是()

A. 20

B. 21

C. 22

D. 23

3.目标串为T="this is a string",模式串P="string",进行模式匹配,有效位移是()(起始位置为0)。

A. 9

B. 10

C. 11

D. 12

4.已知串S= "string",T="this",执行运算strlen(strcopy(S,T))的结果是()

A. 4

B. 6

C. 10

D. 2

5.目标串为T="this is a string",模式串P="string",进行模式匹配,所有的无效位移数是()

A. 6

B. 10

C. 16

D. 11

6.下列命题正确的是()

A. 空串就是空白串;

B. 空串不是串;

C. 空串是长度为0的字符串

D. 串相等指的是长度相等

7.若字符串采用链式存储,每个字符占用一个字节,每个指针在占用四个字节,则该字符串的存储密度为()

A. 50%

B. 25%

C. 75%

D. 20%

8.当目标串的长度为n,模式串的长度为m时,朴素的模式匹配算法最坏情况下字符的比较次数()

A . n B. n*m C. (n-m+1)*m D. m

9.当目,模式串的长度为m时,朴素的模式匹配算法最好情况下字符的比较次数()

A. n

B. m

C. n+m D n-m

10.字符串是一种特殊的线性表,它与一般线性表的区别是()

字符串是一种线性结构;

字符串可以进行复制操作;

字符串由字符构成并且通常作为整体参与操作;

字符串可以顺序存储也可以链式存储。

11.下所述中正确的是()

A.串是一种特殊的线性表 B.串的长度必须大于零

C.串中元素只能是字母 D.空串就是空白串

12.若目标串的长度为n,模式串的长度为[n/3],则执行模式匹配算法时,在最坏情况下的时间复杂度是()

A.O(n/3) B.O(n) C.O(n2) D.O(n3)

13.设有两个串T和P,求P在T中首次出现的位置的串运算称作()A.联

接 B.求子串 C.字符定

位 D.子串定位

14.为查找某一特定单词在文本中出现的位置,可应用的串运算是()

A.插入 B.删除 C.串联

接 D.子串定位

15.已知函数Sub(s,i,j)的功能是返回串s中从第i个字符起长度为j的子串,函数Scopy(s,t)的功能为复制串t到s。若字符串S="SCIENCESTUDY",则调用函数Scopy(P,Sub(S,1,7))后得到( )

A.P="SCIENCE" B.P="STUDY"

C.S="SCIENCE" D.S="STUDY"

二、填空题

1.空串的长度为,空格串(空白串)的长度为。

2.子串的定位运算又称为,通常把主串又称为子串又称为。

3.成功匹配的起始位置称为,匹配失败的起始位置称为。

4.设目标串为T="abccdadeef",模式串P="ade",则第趟匹配成功。

5.已知串T="abccdadeef",P="abccyde",函数strcmp(T,P)的运算结果是。

6.串朴素的模式匹配算法在顺序串和链串上运行,时间复杂度。

7.已知串T="abccdadeef",T中包含以b打头的子串有个。

8.通常在程序设计中,串分为和。

9.按存储结构通常分为和。

10.设s1="GOOD",s2="" ,s3="BYE!",则s1,s2,和s3连接后的结果

是。

三.阅读程序题

指出程序功能

int stringcmp(Hstring S,Hstring T)

{int i=0,tag=1;

if (S.length!=T.length) tag=0;

else

while(i

if (S.ch[i]==T.ch[i]) i++;

else tag=0;

return tag;

}

2.阅读程序

int stringpatindex (Hstring S,Hstring T)

{int i,j,k;

for(i=0;i

{for(j=i,k=0;k

if(S.ch[j]!=T.ch[k]&&|T[k]!='?')

break;

if(k>=T.length) return i;

}

return –1;

}

(1)指出程序功能;

(2)设S中存储"there are a string",T中存储"??r"函数的返回值是什么?3.阅读程序指出程序功能

void restring(Hstring S)

{char *p,*q,c;

p=S.ch;q=S.ch+S.length-1;

while(p

{c=*p;*p=*q;*q=c;

p++;q--;

}

}

4.下列算法的功能是比较两个链串的大小,其返回值为:

-1 s1

comstr(s1,s2)= 0 s1=s2

1 s1>s2

请在空白处填入适当的内容。〖2001〗

int comstr(linkstring s1,linkstring s2)

{//s1和s2为两个链串的头指针

while(s1&&s2) {

if(s1->datadata) return –1;

if(s1->data>s2->data) return 1;

①;

②;

}

if( ③ ) return –1;

if( ④ ) return 1;

⑤ ;

}

四、算法设计题

1.利用C的库函数strlen,strcpy和strcat写一个算法void strinsert(char *S,char *T,int i),将串T插入到串S的第i个位置上。若i大于S的长度,则插入不执行。

相关文档
最新文档