软题库 移动APP 扫码下载APP 随时随地移动学习 培训课程
当前位置:信管网 >> 在线考试中心 >> 信息系统项目管理师题库 >> 试题查看
试卷名称 2009年下半年程序员考试下午真题试题(案例分析)
考试中心《2009年下半年程序员考试下午真题试题(案例分析)》在线考试
试卷年份2009年下半年
试题题型【分析简答题】
试题内容

阅读以下说明和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 */
  }
  }


相关试题

推荐文章
合作网站内容