参考答案:
详细解析:
(共15分)
阅读以下说明和C函数,将解答填入答题纸的对应栏内。
【说明】
函数del_substr(S,T)的功能是从头至尾扫描字符串S,删除其中与字符串T相同的所有子串,其处理过程为:首先从串S的第一个字符开始查找子串T,若找到,则将后面的字符向前移动将子串T覆盖掉,然后继续查找子串T,否则从串S的第二个字符开始查找,依此类推,重复该过程,直到串S的结尾为止。该函数中字符串的存储类型SString定义如下:
typedef struct{
char *ch; /*串空间的首地址*/
int length; /*串长*/
}SString;
【C函数】
void del substr(SString*S, SString T)
{
int i, j;
if(S->length<1||T.length<1||S->length<T.length)
return;
i=0; /* i为串S中字符的下标 */
for(;;){
j=0; /* j为串T中字符的下标 */
while(i<S->length&&j<T.length){ /* 在串S中查找与T相同的子串 */
if(S->ch[i]==T.ch[j]){
i++; j++;
}
else{
i= (1) ; j=0; /* i值回退,为继续查找T做准备 */
}
}
if( (2) ){ /* 在S中找到与T相同的子串 */
i= (3) ; /* 计算S中子串T的起始下标 */
for(k=i+T.length; k
S->ch[ (4) ]=S->ch[k];
S->length= (5) ; /* 更新S的长度*/
}
else break; /* 串S中不存在子串T */
}
}
参考答案:
详细解析: