第四章-串-习题及答案.doc

第四章-串-习题及答案.doc

ID:61764790

大小:83.00 KB

页数:12页

时间:2021-03-19

第四章-串-习题及答案.doc_第1页
第四章-串-习题及答案.doc_第2页
第四章-串-习题及答案.doc_第3页
第四章-串-习题及答案.doc_第4页
第四章-串-习题及答案.doc_第5页
资源描述:

《第四章-串-习题及答案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第四章串习题及答案一、基础知识题4.1简述下列每对术语的区别:空串和空白串;串常量和串变量;主串和子串;静态分配的顺序串和动态分配的顺序串;目标串和模式串;有效位移和无效位移。4.2假设有如下的串说明:chars1[30]="Stocktom,CA",s2[30]="March51999",s3[30],*p;(1)在执行如下的每个语句后p的值是什么?p=stchr(s1,'t');p=strchr(s2,'9');p=strchr(s2,'6');(2)在执行下列语句后,s3的值是什么?strcpy(s3,s1);strcat(s3,",");

2、strcat(s3,s2);(3)调用函数strcmp(s1,s2)的返回值是什么?(4)调用函数strcmp(&s1[5],"ton")的返回值是什么?(5)调用函数stlen(strcat(s1,s2))的返回值是什么?4.3设T[0..n-1]="adaabaabcaabaa",P[0..m-1]="aab".当用模式串匹配目标串T时,请给出所有的有效位移。算法NaiveStrMatch(T,P)返回的位移是哪一个位移。二、算法设计题:4.4利用C的库函数strlen,strcpy和strcat写一算法voidStrInsert(char*

3、S,char*T,inti),将串T插入到串S的第i个位置上。若i大于S的长度,则插入不执行。4.5利用C的库函数strlen和strcpy(或strncpy)写一算法voidStrDelete(char*S,inti,intm)删去串S中从位置i开始的连续m个字符。若i≥strlen(S),则没有字符被删除;若i+m≥strlen(S),则将S中从位置i开始直至末尾的字符均删去。4.6以HString为存储表示,写一个求子串的算法。4.7一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为:abcdefghijklmnopqrstu

4、vwxyzngzqtcobmuhelkpdawxfyivrsj则字符串"encrypt"被加密为"tkzwsdf".试写一算法将输入的文本串进行加密后输出;另写一算法,将输入的已加密的文本串进行解密后输出。4.8写一算法voidStrReplace(char*T,char*P,char*S),将T中首次出现的子串P替换为串S。注意:S和P的长度不一定相等。可以使用已有的串操作。4.9将NaveStrMatch改写为输出目标串中所有也模式串匹配的有效位移。*4.10利用4.9的结果写一算法voidStrReplaceAll(char*T,char*

5、P,char*S),将T中出现的所有与P相等的不重叠子串替换为S,这里S和P的长度不一定相等。4.11若S和T是用结点大小为1的单链表存储的两个串,试设计一个算法找出S中第一个不在T中出现的字符。答案:4.1简述下列每对术语的区别:空串和空白串;串常量和串变量;主串和子串;静态分配的顺序串和动态分配的顺序串;目标串和模式串;有效位移和无效位移。答:空串是指不包含任何字符的串,它的长度为零。空白串是指包含一个或多个空格的串,空格也是字符。串常量是指在程序中只可引用但不可改变其值的串。串变量是可以在运行中改变其值的。主串和子串是相对的,一个串中任意个

6、连续字符组成的串就是这个串的子串,而包含子串的串就称为主串。静态分配的顺序串是指串的存储空间是确定的,即串值空间的大小是静态的,在编译时刻就被确定。动态分配的顺序串是在编译时不分配串值空间,在运行过程中用malloc和free等函数根据需要动态地分配和释放字符数组的空间(这个空间长度由分配时确定,也是顺序存储空间)。目标串和模式串:在串匹配运算过程中,将主串称为目标串,而将需要匹配的子串称为模式串,两者是相对的。有效位移和无效位移:在串定位运算中,模式串从目标的首位开始向右位移,每一次合法位移后如果模式串与目标中相应的字符相同,则这次位移就是有效

7、位移(也就是从此位置开始的匹配成功),反之,若有不相同的字符存在,则此次位移就是无效位移(也就是从此位置开始的匹配失败)。4、2解:(1)stchr(*s,c)函数的功能是查找字符c在串s中的位置,若找到,则返回该位置,否则返回NULL。因此:执行p=stchr(s1,'t');后p的值是指向字符t的位置,也就是p==&s1[5]。执行p=strchr(s2,'9');后p的值是指向s2串中第一个9所在的位置,也就是p==&s2[9]。执行p=strchr(s2,'6');之后,p的返回值是NULL。(2)strcpy函数功能是串拷贝,strca

8、t函数的功能是串联接。所以:在执行strcpy(s3,s1);后,s3的值是"Stocktom,CA"在执行strcat(s3,",")

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。