……………………………………………………………最新资料推荐…………………………………………………
第四章 串 作业
参考答案:
1、简述空串和空格串(或称空格符串)的区别?
1)空串是指不包括任何字符的串,空格串指包含若干个空格字符的字符串;
2)空串长度为零,空格串长度为所包括的空格字符的个数。 2、设s=‘IAMASTUDENT ’,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(SubString(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) = ‘IAMAWORKER ’ 8) Concat(SubString(s,6,2),Concat(t,SubString(s,7,8))) = ‘A GOOD STUDENT’
3、若串S1=‘ABCDEFG’, S2=‘9898’ ,S3=‘###’,S4=‘012345’,执行
concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘8’),length(S2)))其结果是多少? 答:ABC###G1234
4、下列算法实现求采用顺序结构存储的串s和串t的一个最长公共子串。请将空格处填上正确的语句。
void maxcomstr(orderstring *s,*t; int index, length)
{
int i,j,k,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; } else(2) __; if (length1>length) { index=i; length=length1; } (3)____; }
else(4) ___; ……………………………………………………………最新资料推荐…………………………………………………
} (5) __ } }
提示:
算法采用顺序存储结构求串s和串t的最大公共子串。串s用i指针(1<=i<=s.len)。t串用j指针(1<=j<=t.len)。算法思想是对每个i(1<=i<=s.len,即程序中第一个while循环),来求从i开始的连续字符串与从j(1<=j<=t.len,即程序中第二个while循环)开始的连续字符串的最大匹配。程序中第三个(即最内层)的while循环,是当s中某字符(s[i])与t中某字符(t[j])相等时,求出局部公共子串。若该子串长度大于已求出的最长公共子串(初始为0),则最长公共子串的长度要修改。 程序:
(1) i+k<=s.len && j+k<=t.len && s[i+k]==t[j+k]
//如果在s和t的长度内,对应字符相等,则指针k 后移(加1) (2) con=0 //s和t对应字符不等时置标记退出
(3) j+=k //在t串中,从第j+k字符再与s[i]比较