刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题




阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。

【说明1】

递归函数is_elem(char ch, char *set)的功能是判断ch中的字符是否在set表示的字符集合中,若是,则返回1,否则返回0。

【C代码1】

int is_elem (char ch ,char*set)
{
     If(*set==‘\0’)
         return 0;
     else
        If((1))
     return 1;
       else
        return is_elem((2))
}

【说明2】

函数char*combine(char* setA,char *setB)的功能是将字符集合A(元素互异,由setA表示)和字符集合B(元素互异,由setB表示)合并,并返回合并后的字符集合。

【C代码2】

char*combine(char *setA, char*setB)
{
    int i,lenA, lenB, lenC;
    lenA=strlen(setA);
    lenB=strlen(setB);
    char*setC=(char*)malloc(lenA+lenB+1);
if(!setC)
return NULL;
strncpy(setC,setA,lenA);       //将setA的前lenA个字符复制后存入setC
lenC = (3);
for(i=0;i<lenB;i++)
  if((4))             //调用is_elem判断字符是否在setA中
        setC[lenC++]=setB[i];
     (5) =‘/0’;        //设置合并后字符集的结尾标识
return setC;
}

使用微信搜索喵呜刷题,轻松应对考试!

答案:

(1)set[0]==ch或*set==ch或其他等价形式

(2)ch,set+1或ch,++set或其他等价形式

(3)lenA或其他等价形式

(4)is_elem(setB[i],*setA)==0或!is_elem(setB[i],*setA)或其他等价形式

(5)setC[lenC]或其他等价形式

解析:

(1)对于第一个空缺,我们需要比较给定的字符ch和集合set的第一个字符是否相等。在C语言中,可以使用字符之间的直接比较来实现这一点。因此,正确的表达式应该是ch == set或set == ch。这里使用指针访问集合的第一个字符。

(2)对于第二个空缺,我们需要将给定的字符ch与集合set的下一个元素进行比较。在递归调用中,我们需要更新指针的位置以便检查下一个字符。因此,我们可以使用表达式(ch, set + 1)或(ch, ++set)。这里使用的是指针算术和前置递增操作来移动指针位置。

(3)第三个空缺表示合并后集合的长度,由于我们知道原始集合A的长度是lenA,因此可以直接使用lenA来表示合并后的集合长度。在C语言中,字符串长度通常是指字符串中字符的数量,不包括结尾的空字符’\0’。因此,lenA表示的是合并前集合A的字符数量。

(4)第四个空缺是判断字符是否在集合A中的条件表达式。我们可以使用is_elem函数来判断字符是否在集合A中。如果字符不在集合A中,那么它应该在合并后的集合中。因此,正确的表达式是(is_elem(setB[i], *setA) == 0)或(!is_elem(setB[i], *setA))。这里使用了逻辑非操作符来反转条件判断的结果。

(5)最后一个空缺是设置合并后字符串的结尾标识。在C语言中,字符串以空字符’\0’结尾。因此,我们应该在最后一个字符后面添加’\0’来表示字符串的结束。正确的表达式是(setC[lenC]),其中lenC表示合并后字符串的长度(不包括结尾的空字符)。通过这种方式,我们确保新字符串正确地以空字符结尾。

创作类型:
原创

本文链接:阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明1】递归函数is_elem

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share