选择题:试题四(共 15分) 阅读以下说明和C函数,将解答填入答题纸的对应栏内。 【说明】 函数del_substr(S,T)

  • 题目分类:软考初级
  • 题目类型:选择题
  • 查看权限:VIP
题目内容:
试题四(共 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->length; k++) /* 通过覆盖子串T进行删除 */

S->ch[ (4) ] = S->ch[k];

S->length = (5) ; /* 更新S的长度 */

}

else break; /* 串S中不存在子串T*/

}

}




参考答案:

试题五(共 15分) 阅读以下说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】

试题五(共 15分) 阅读以下说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】

查看答案

●在需要经常查找结点的前驱与后继的场合中,使用 (40) 比较合适。(40) A.单链表 B.循环链表 C.链栈

●在需要经常查找结点的前驱与后继的场合中,使用 (40) 比较合适。(40) A.单链表 B.循环链表 C.链栈

查看答案

试题六(共 15分) 阅读以下说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】

试题六(共 15分) 阅读以下说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】

查看答案

● 某网站向CA申请了数字证书,用户通过 (16) 来验证网站的真伪。(16)A. CA 的签名 B. 证书中的公钥

● 某网站向CA申请了数字证书,用户通过 (16) 来验证网站的真伪。(16)A. CA 的签名 B. 证书中的公钥

查看答案

● (45) 是面向对象程序设计语言不同于其他语言的主要特点。是否建立了丰富的 (46) 是衡量一个面向

● (45) 是面向对象程序设计语言不同于其他语言的主要特点。是否建立了丰富的 (46) 是衡量一个面向

查看答案