《第4章串 作業(yè)(參考答案)》由會(huì)員分享,可在線閱讀,更多相關(guān)《第4章串 作業(yè)(參考答案)(4頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第四章 串 作業(yè)
參考答案:
1、簡(jiǎn)述空串和空格串(或稱空格符串)的區(qū)別?
1)空串是指不包括任何字符的串,空格串指包含若干個(gè)空格字符的字符串;
2)空串長(zhǎng)度為零,空格串長(zhǎng)度為所包括的空格字符的個(gè)數(shù)。
2、設(shè)s=‘I AM A STUDENT ’,t=‘GOOD’,q=‘WORKER’.求:
1) StrLength(s)
2) StrLength(t)
3) SubString(s,8,7)
4) SubSting(t,2,1)
5) Index(s,’A’)
6) index(s,t)
7) Replace(s,’STUDENT’,q)
8) Concat(Sub
2、String(s,6,2),Concat(t,SubString(s,7,8)))
答:
1) StrLength(s)=14
2) StrLength(t)=4
3) SubString(s,8,7) = ‘STUDENT’
4) SubSting(t,2,1) = ‘O’
5) Index(s,’A’)= 3
6) index(s,t) = 0
7) Replace(s,’STUDENT’,q) = ‘I AM A WORKER ’
8) Concat(SubString(s,6,2),Concat(t,SubString(s,7,8))) = ‘A GOOD STUD
3、ENT’
3、若串S1=‘ABCDEFG’, S2=‘9898’ ,S3=‘###’,S4=‘012345’,執(zhí)行
concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘8’),length(S2)))其結(jié)果是多少?
答:ABC###G1234
4、下列算法實(shí)現(xiàn)求采用順序結(jié)構(gòu)存儲(chǔ)的串s和串t的一個(gè)最長(zhǎng)公共子串。請(qǐng)將空格處填上正確的語句。
void maxcomstr(orderstring *s,*t; int index, length)
{
int i,j,k,
4、length1,con;
index=0;length=0;i=1;
while (i<=s.len)
{
j=1;
while(j<=t.len)
{
if (s[i]= =t[j])
{
k=1; length1=1; con=1;
while(con)
if (1) _ { length1=length1+1;k=k+1; }
el
5、se (2) __;
if (length1>length) { index=i; length=length1; }
(3)____;
}
else (4) ___;
}
(5) __
}
}
提示:
算法采用順序存儲(chǔ)結(jié)構(gòu)求串s和串t的最大公共子串。串s用i指針(1<=i<=s.len)。t串用j指針(1<=j<=t.len)。算法思想是對(duì)每個(gè)i(1<=i<=s.len,即程序中第一個(gè)while循環(huán)),來求
6、從i開始的連續(xù)字符串與從j(1<=j<=t.len,即程序中第二個(gè)while循環(huán))開始的連續(xù)字符串的最大匹配。程序中第三個(gè)(即最內(nèi)層)的while循環(huán),是當(dāng)s中某字符(s[i])與t中某字符(t[j])相等時(shí),求出局部公共子串。若該子串長(zhǎng)度大于已求出的最長(zhǎng)公共子串(初始為0),則最長(zhǎng)公共子串的長(zhǎng)度要修改。
程序:
(1) i+k<=s.len && j+k<=t.len && s[i+k]==t[j+k]
//如果在s和t的長(zhǎng)度內(nèi),對(duì)應(yīng)字符相等,則指針k 后移(加1)
(2) con=0
//s和t對(duì)應(yīng)
7、字符不等時(shí)置標(biāo)記退出
(3) j+=k
//在t串中,從第j+k字符再與s[i]比較
(4) j++
//t串取下一字符
(5) i++
//s串指針i后移(加1)。
5、(選作)令s=‘a(chǎn)aab’,t=‘a(chǎn)bcabaa’,u=‘a(chǎn)bcaabbabcabaacbacba’。
試分別求出它們的next函數(shù)值和nextval函數(shù)值。
8、
答:
對(duì)s=‘a(chǎn)aab’: next[] = {0, 1, 2, 3}
nextval[] = {0, 0, 0, 3}
對(duì)t=‘a(chǎn)bcabaa’: next[] = {0, 1, 1, 1,2,3,2}
nextval[] = {0,1,1,0,1,3,2}
對(duì)s=‘a(chǎn)bcaabbabcabaacbacba:
next[] = {0,1,1,1,2,2,3,1,2,3,4,5,3,2,2,1,1,2,1,1}
nextval[] = {0,1,1,0,2,1,3,0,1,1,0,5,3,2,2,1,0,2,1,0}