第 04 章作业答案.docx
- 文档编号:29044818
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:8
- 大小:15.51KB
第 04 章作业答案.docx
《第 04 章作业答案.docx》由会员分享,可在线阅读,更多相关《第 04 章作业答案.docx(8页珍藏版)》请在冰豆网上搜索。
第04章作业答案
习题
习题(p.119)
1.设s=’IAMASTUDENT’,t=’GOOD’,q=’WORKER’。
给出下列操作的结果:
StrLength(s);SubString(sub1,s,0,7);SubString(sub2,s,6,1);
StrIndex(s,4,’A’);StrReplace(s,’STUDENT’,q);
StrCat(StrCat(sub1,t),StrCat(sub2,q))。
9.写一个函数将顺序串s1中的第i个字符到第j个字符之间的字符用s2串替换。
[提示]:
包括第i个字符和第j个字符,第j个字符后面的所有字符可能需要左移或右移。
11.写算法,实现顺序串的基本操作StrReplace(&s,t,v)。
1.设s=’IAMASTUDENT’,t=’GOOD’,q=’WORKER’。
给出下列操作的结果:
StrLength(s);SubString(sub1,s,0,7);SubString(sub2,s,6,1);
StrIndex(s,4,’A’);StrReplace(s,’STUDENT’,q);
StrCat(StrCat(sub1,t),StrCat(sub2,q))。
[参考答案]
StrLength(s)=14;sub1=’IAMA_’;
sub2=’_’;StrIndex(s,’A’,4)=6;
StrReplace(s,’STUDENT’,q)=’IAMAWORKER’;
StrCat(StrCat(sub1,t),StrCat(sub2,q))
=’IAMAGOODWORKER’;
9.写一个函数将顺序串s1中的第i个字符到第j个字符之间的字符用s2串替换。
[提示]:
包括第i个字符和第j个字符,第j个字符后面的所有字符可能需要左移或右移。
Replace(s1,i,j,s2)
len=j-i+1;
//如果len>s2.len,左移缩位
if(len>s2.len)
{d=len–s2.len;
for(k=j+1;k
s1->ch[k–d]=s1->ch[k];
}
//如果len //暂不考虑截断 elseif(len {d=s2.len–len; for(k=s1->len–1;k>=j+1;k--) s1->ch[k+d]=s1->ch[k]; } //复制替换串 for(k=0;k s1->ch[i+k]=v.ch[k]; s1->len=s1->len–len+s2.len; 11.写算法,实现顺序串的基本操作StrReplace(s,t,v)。 [提示]: ●算法思路: (1)被替换子串定位 (2)被替换子串后面的字符左移或右移(为替换子串准备房间) (3)替换子串入住(复制) (4)重复上述,直到…… ●实现策略: 可以先采用调用子函数的方法: (1)利用StrIndex(s,pos,t)找到被替换串的位置pos, (2)利用Replace(s,pos,len,v),实现一次替换 (3)在此基础上,消去子函数调用即可 ●采用调用子函数的方法如下: V1: 仅完成一次代换 StrReplace(s,t,v) { k=StrIndex(s,0,t); Replace(s,k,t.len,v); } V2: 完成多次代换(无条件) StrReplace(s,t,v) { pos=0; 重复下面操作: { k=StrIndex(s,pos,t); Replace(s,k,t.len,v); pos=k+v.len; } } V3: 完成多次代换(循环条件1) StrReplace(s,t,v) { pos=0; while(pos<=s->len) { k=StrIndex(s,pos,t); if(k>=0) { Replace(s,k,t.len,v); pos=k+v.len; } elsebreak; } } V4: 完成多次代换(循环条件2) StrReplace(s,t,v) { pos=0; while(pos<=s->len–t.len) { k=StrIndex(s,pos,t); if(k>=0) { Replace(s,k,t.len,v); pos=k+v.len; } elsebreak; } } V5: 返回完成情况状态码 intStrReplace(s,t,v) {intflag=0; pos=0; while(pos<=s->len–t.len) { k=StrIndex(s,pos,t); if(k>=0) { Replace(s,k,t.len,v); pos=k+v.len; flag=1; } elsebreak; } returnflag; } ●消去子函数调用的过程如下: V4: 完成多次代换(循环条件2) StrReplace(s,t,v) { pos=0; while(pos<=s->len–t.len) { k=StrIndex(s,pos,t); if(k>=0) { Replace(s,k,t.len,v); pos=k+v.len; } elsebreak; } } V4': 完成多次代换(循环条件2) StrReplace(s,t,v) { if(t.len==0)return(0);//代换失败 start=0; while(start<=s->len–t.len) { //k=StrIndex(s,start,t); i=start;j=0; while(j if(s->ch[i]==t.ch[j]){i++;j++;} else{if(start==s->len–t.len) {start=-1;break;} ++start; i=start; j=0; } if(start>=0) { //Replace(s,start,t.len,v); //如果t.len>v.len,左移缩位 if(t.len>v.len) {d=t.len–v.len; for(i=start+t.len;i s->ch[i–d]=s->ch[i]; } //如果t.len //暂不考虑截断 elseif(t.len {d=v.len–t.len; for(i=s->len–1;i>=start+t.len;i--) s->ch[i+d]=s->ch[i]; } //复制替换串 for(i=0;i s->ch[start+i]=v.ch[i]; s->len=s->len–t.len+v.len; start=start+v.len; } elsebreak; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 04 作业答案 作业 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)