无法使我的代码正常工作

时间:2013-11-10 23:14:09

标签: c

任务说:

  

给定一个字符串,递归计算一个新的字符串,其中所有'x'字符都已被删除。

我的代码:

#include<stdio.h>
#include<string.h>
char c[50];
int xx(char a[],int b,int d){
    if(a[b]=='\0')
        return a;
    else if(a[b]=='x'){
        c[d]=a[b+1];
        return xx(a,b+2,d+1);}
    else {
            c[d]=a[b];
            return xx(a,b+1,d+1);
        }


}
int main()
{
 char a[50];
 scanf("%s",a);
 xx(a,0,0);
 printf("%s",c);
 return 0;

 }

只要我没有在另一个x旁边输入x就行了。就像我输入xaxb一样,结果将是ab

但如果我输入xxaxxb,结果将为xaxb ...

1 个答案:

答案 0 :(得分:1)

您的代码会跳过一个可能很重要的角色 - 这三行中的'\0''x'

else if(a[b]=='x'){
    c[d]=a[b+1];
    return xx(a,b+2,d+1);
}

此代码继续执行并复制a[b+1]而不检查该字符。

您不应该在那里复制任何内容 - 只需b前进1,并按原样保留d

else if(a[b]=='x'){
    return xx(a,b+1,d);
}

这样,下一级调用会为您检查a[b+1],根据需要停止或删除它。