阅读以下说明和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&&j
最后,空(5)处很明显是要将S的长度减去子串T的长度值,因为删除了一个相应长度值的子串,因此空(5)处填入S->length-T.length。