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

简答题

阅读以下说明和C函数,填补代码中的空缺,将解答填入答题纸的对应栏内。
[说明]
函数removeDuplicates(chai *str)的功能是移除给定字符串中的重复字符,使每种字符仅保留一个,其方法是:对原字符串逐个字符进行扫描,遇到重复出现的字符时,设置标志,并将其后的非重复字符前移。例如,若str指向的字符串为"aaabbbbscbsss",则函数运行后该字符串为"absc"。

[C代码]

    void
removeDuplicates(char *str)

    {

    int
i,len=strlen(str);    /*求字符串长度*/

    if(______)return;
 /*空串或长度为1的字符串无需处理*/

    for(i=0;i<len;i++){

    int flag=0;  
 /*字符是否重复标志*/

    int m;

    for(m=______; m<len;m++){

  
 if(Str[i]==str[m]){

    ______;
 break;

    }

    }

    if (flag)  {

    int n,idx=m;

    /*将字符串第idx字符之后、与str[i]不同的字符向前移*/

    for(n=idx+1; n<len; n++)

  
 if(Str[n]!=str[i]){

    str[idx]=str[n];
______;

    }

    str[______]='\0';
   /*设置字符串结束标志*/

    }

    }

    }

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

答案:

len<2  或len<=1    或等价表示
i+1    或等价表示
flag=1  或给flag赋值为任何一个不是0的值
idx++  或idx=idx+1    或等价表示
idx    或等价表示

解析:

本题考查的是对字符串处理的C语言编程能力。根据题目描述和代码注释,我们需要完善一个名为removeDuplicates的函数,该函数的功能是移除给定字符串中的重复字符,使每种字符仅保留一个。

首先,对于空(1),由于函数需要处理的是长度大于1的字符串,所以当字符串长度小于等于1时,无需处理,直接返回。因此应填入的内容为len<=1 或等价表示。

其次,对于空(2),我们需要对字符串从当前位置开始扫描是否存在重复字符,所以应从当前位置的下一个字符开始扫描,即i+1。

然后,对于空(3),当我们找到一个重复字符时,需要设置标志位以便后续处理。这里可以简单地将flag设置为1或任何非零值。

接着,对于空(4),当我们找到一个与str[i]不同的字符时,需要将其前移以覆盖重复字符。前移操作完成后,我们需要更新idx的值以便处理下一个字符,所以应填入idx++ 或 idx=idx+1。

最后,对于空(5),在处理完所有字符并移动了部分字符后,字符串的结束标志应设置在新的字符串的末尾,由于之前已经将idx自增以处理下一个字符,所以这里应填入idx。

创作类型:
原创

本文链接:阅读以下说明和C函数,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]函数removeDupl

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

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

分享考题
share