首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
字符串是程序中常见的一种处理对象,在字符串中进行子串的定位、插入和删除是常见的运算。 设存储字符串时不设置结束标志,而是另行说明串的长度,因此串类型定义如下: typedef struct { char *str; //字
字符串是程序中常见的一种处理对象,在字符串中进行子串的定位、插入和删除是常见的运算。 设存储字符串时不设置结束标志,而是另行说明串的长度,因此串类型定义如下: typedef struct { char *str; //字
admin
2018-04-19
125
问题
字符串是程序中常见的一种处理对象,在字符串中进行子串的定位、插入和删除是常见的运算。
设存储字符串时不设置结束标志,而是另行说明串的长度,因此串类型定义如下:
typedef struct {
char *str; //字符串存储空间的起始地址
int length; //字符串长
int capacity; //存储空间的容量
}SStrinq;
【函数I说明】
函数indexStr(S,T,pos)的功能是:在S所表示的字符串中,从下标pos开始查找T所表示字符串首次出现的位置。方法是:第一趟从S中下标为pos、T中下标为0的字符开始,从左往右逐个对应来比较S和T的字符,直到遇到不同的字符或者到达T的末尾。若到达T的末尾,则本趟匹配的起始下标pos为T出现的位置,结束查找;若遇到了不同的字符,则本趟匹配失败,下一趟从S中下标pos+l处的字符开始,重复以上过程。若在S中找到T,则返回其首次出现的位置,否则返回一1。
例如,若S中的字符串为”students ents”,T中的字符串为”ent”,pos=0,则T在S中首次出现的位置为4。
【C函数1】
int indexStr(SString S,SString T,int pos)
{
int i r j;
if(S.1ength<1 || T.length<1 || S.1ength
return-1;
for{i=pos,j=0;i
if{S.str
=T.str[j]){
i++; J++;
}
else{
i=(1)_________; j=0;
}
}
if((2)_________ ) return i-T.length;
return-1;
}
【函数2说明】
函数eraseStr(S,T)的功能是删除字符串S中所有与T相同的子串,其处理过程为:首先从字符串S的第一个字符(下标为0)开始查找子串T,若找到(得到子串T在S中的起始位置),则将串S中子串T之后的所有字符向前移动,将子串T覆盖,从而将其删除,然后重新开始查找下一个子串T,若找到就用后面的字符序列进行覆盖,重复上述过程,直到将S中所有的子串T删除。
例如,若字符串S为“12ab345abab678”、T为“ab”。第一次找到“ab”时(位置为2),将“345abab678”前移,S中的串改为“12345abab678”,第二次找到“ab”时(位置为5),将“ab678”前移,S中的串改为“12345ab678”,第三次找到“ab"时(位置为5),将“678”前移,S中的串改为“12345678”。
【C函数2】
void eraseStr(SString*S,SString T)
{
int i;
int pos;
if { S一>length<1 || T.1ength< 1 || S一>length
return;
pos=0;
for(;;) {
//调用indexStr在S所表示串的pos开始查找T的位置
pos=indexStr((3)_________);
if(pos=-1) //S所表示串中不存在子串T
return;
for(i=pos+T.1ength;i
length;i++)//通过覆盖来删除子串T
S->str[(4)_________]=s->str
;
s->length=(5)_________; //更新S所表示串的长度
}
}
选项
答案
(1)i—j+1或其等价形式 (2)j=T.1ength或J>=T.1ength或其等价形式 (3)*S,T,pos (4)i—T.1ength (5)S—>length—T.1ength或(*S).length—T.1ength
解析
本题考查数据结构的实现、C程序运算逻辑与指针参数的应用。
根据说明,首先要理解名称为SString的结构体类型的定义,其中str为字符指针变量,用来记录所存储字符串的空间的首地址,length表示字符串的长度值。定义SString类型的变量时,需要进行初始化处理,为要存储的字符串申请存储空间并设置长度值为0。
函数indexStr(S,T,pos)功能是在S表示的串中查找T表示的串首次出现的位置,且从S中下标为pos的字符开始查找。根据说明,在对字符进行比较的过程中,当S.str
与T.str[j]相同时,需要将i和j自增并继续进行比较;如果不相等,就要将i进行回退,j也回退至模式串的第一个字符位置。空(1)处需要补充计算i的回退值的表达式。
参看下面所示的字符对应关系,当S.str
与T.str[j]不相等时,其之前的j个字符是相等的,因此本趟开始的下标位置为i-j,因此需将i回退至i-j+l,准备好下一趟的开始位置,因此空(1)处应填入“i-j+1”。
S
0
S
1
…S
i-j-1
S
i-j
S
i-j+1
…S
i-2
S
i-1
S
i
T
0
T
1
…T
j-2
T
j-1
T
j
空(2)处是判断在S表示的字符串中是否找到了T所表示的字符串,显然应该填入“j=T.length”或其等价形式。
函数eraseStr(S,T)的功能是删除字符串S中所有与T相同的子串,需要调用indexStr函数。空(3)处是调用indexStr完成字符串的查找,需要注意的是第一个参数,*S,因为eraseStr得到的是S所表示字符串的指针,因此结合注释信息,空(3)处应填“*S,T,pos”。
空(4)所在的语句实现字符的删除处理。由于要将所找到子串之后的所有字符前移来实现删除,而被删除的子串长度为T.1ength,因此后面每个需要移动的字符都是以间距T.1ength前移的,即S->str[i-T.length]=S->str
,因此空(4)处应填入“i-T.length”。
空(5)是一个简单处理,即修改S所表示的字符串长度值,应填入“S->length—T.length”。
转载请注明原文地址:https://www.kaotiyun.com/show/s2jZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
在Excel中,设单元格A1中的值为100,B1中的值为200,A2中的值为300,B2中的值为400,若在A3单元格中输入函数“=SUM(A1:B2)”,按回车键后,A3单元格中的值为()。
据某地区统计,今年中小学生中肥胖学生约占10%,而且,肥胖学生人数正在以8%的速度增长。假设近年中小学生的总量变化不大,据此我们可以推算出,明年该地区中小学生中肥胖学生的比例约为(64)。
某企业的大数据工程项目包括如下四个阶段的工作:①数据获取,②数据清洗与整理,③数据分析,④数据展现。一般来说,工作量较大、花费时间较长的阶段是______(1),技术含量最高的阶段是______(2),准备向有关部门递交成果的阶段是______(3)。
收集数据时,设计调查的问题很重要。此时,需要注意的原则不包括(8)。
Windows XP的许多应用程序的“文件”菜单中,都有“保存”和“另存为”两个命令。以下对这两个命令的叙述,正确的是(36)。
编译程序的作用是将高级程序语言源程序翻译为(4)。
2008年9月27日,地面指挥中心通过“天地语音系统”和航天员进行了通话。“天地语音系统”的地面设备包括通信设备、数据传输设备、分组交换设备和地面卫星通信站等,飞船上则配备了无线通信、视频传输与数据记录等设备,使得航天员与地面指挥中心随时可以进行信息交流。
请认真阅读下列有关Linux操作系统环境下配置成一台DNS服务器的说明信息,然后根据要求回答问题1至问题5。【说明】一台装有Linux操作系统的电脑,IP地址是“192.168.0.39’’,主机名是dnserver。现在要在这台电脑上配置成一台
随机试题
控制目标移置是指人们对控制的反应往往是想要确认控制中的检测过程及其测量记录是有效的,当他们的行为达到了这个结果,而控制所要达到的目标或目的却没有达到。根据以上定义,下列不属于该定义范畴行为的是()。
患者,女,42岁。因四肢关节及肌肉疼痛半年入院。既往体健。提示:四肢大小关节轻度压痛,肌力基本正常,无皮疹,皮肤无增厚。为明确诊断最先需要做的检查有1.ANA2.SF3.血清补体4.肌电图5.HLA-DR6.免疫固定电泳
某猪场猪咳嗽气喘,剖检在肺脏尖叶、心叶前下部见呈岛屿状灰红色或灰白色病灶,切面上病灶粗糙,稍微突出,质地较硬,颜色质地似胰脏,挤压时,即从小支气管中流出一些黏液渗出物;镜检支气管中有浆液性渗出物,并混有较多的中性粒细胞和脱落的上皮细胞,周围的肺泡腔中充满浆
A.林可霉素类B.酰胺醇类(氯霉素)C.四环素类D.氨基糖苷类E.氟喹诺酮类可抑制骨髓造血功能,或引起“灰婴综合征”,新生儿禁用的抗菌药物是()
足月顺产女婴,产后8周,母乳喂养,乳汁充足,产妇要求对计划生育进行指导,该产妇适宜的避孕方法为
有两种理想气体,第一种的压强记作P1,体积记作V1,温度记作T1,总质量记作m1,摩尔质量记作M1;第二种的压强记作P2,体积记作V2,温度记作T2,总质量记作m2,摩尔质量记作M2。当P1=P2,V1=V2,T1=T2时,则M1/M2为( )。
借款人变更还款方式,()条件是不需要满足的。
出版物生产过程中的精神劳动,不包括()等。
计算
Thelocaltheaterhasitsspecialwaysofdrawingcrowds.UnliketheBroadwayperformancesthat(1)______totheelitestratum,d
最新回复
(
0
)