问题 问答题

阅读以下说明和C函数,将解答填入答题纸的对应栏内。

【说明】函数del_substr(S,T)的功能是从头至尾扫描字符串S,删除其中与字符串T相同的所有子串,其处理过程为:首先从串S的第一个字符开始查找子串T,若找到,则将后面的字符向前移动将子串T覆盖掉,然后继续查找子串T;否则从串S的第二个字符开始查找,依此类推,重复该过程,直到串S的结尾为止。该函数中字符串的存储类型SString定义如下:

答案

参考答案:

(1) i-j+1,或其等价形式 (2) j==T.length,或j>=T.length,或其等价形式 (3) i-j,或i-T.length (4) k-T.length,或k-j,或其等价形式 (5) S->length - T.length,或S->length -j

解析:

本题考查C程序设计基本能力,包括指针、结构体类型的应用。  根据题目部分的描述,首先要在字符串S中查找与T相同的子串,基本方法是逐个字符进行比对,其代码如下所示:     显然,当S->ch[i]与T.ch[j]不相等时,i值需回退至本趟开始位置后再后移一个位置,从而为开始下一趟查找做准备。由于相同的字符个 数为j个,因此i需回退至位置i-j+1,即空(1)处填入i-j+1。  由于在串S中查找与T相同的子串是以"i< S->length&&jch[p]~S->ch[p+ T.length-1]中,则需要将S->ch[p+T.length]移至S->ch[p],S->ch[p+ T.length+1]移至S->ch[p+1],依此类推,直到将S->ch[S->length-1]移至 S->ch[S->length-T.length]为止,因此以下代码中的空(4)处应填入k-T.length。    最后,空(5)处很明显是要将S的长度减去子串T的长度值,因为删除了一个相应长度值的子串,因此空(5)处填入S->length-T.length。

单项选择题
单项选择题 B1型题