我的C代码不知道错在哪里?气!!!都弄了好几天!!!

大概明白你的意思.其实就是输入一个字串,看用以上的推导方法能不能得到该目的串是不是!

不过你的程序好像有点复杂!顺便研究了一下...写了段代码不知道合不合你意!

只是针对该语法而已哦!

研究了一个小时,才50分....还不知道会不会给我.~也不知道值不值!

如下:测试结果附在后面

#include<stdio.h>

#include<conio.h>

#include<string.h>

char conver(char *buf);

char conver(char ch);

int sortA(char *buf, int nLen);

void main()

{

char buf[1024];

char ch;

while(1)

{

printf("pls input an buffer...\n");

gets(buf);

if(sortA(buf, strlen(buf)) == 0)

printf("Wrong\n");

else

{

printf("This OK!\n if you want continue press 'Y'\n");

ch = getch();

if(ch != 'Y' && ch != 'y')

break;

}

}

}

int sortA(char *buf, int nLen)

{

char temp[1024];

char ch;

for(int i=0; i<nLen; i++)

{

if((ch=conver(buf[i]))!= 0) //取一位

{

strcpy(temp, buf);

temp[i] = ch;

if(sortA(temp, nLen) == 1) //循环递归调用自己

{

printf("%s->%s\n", temp, buf);

return 1;

}

}

if(nLen == 3 && ((ch = conver(buf)) != 0)) //字符串==3位时获取结果

{

printf("%c->%s\n", ch, buf);

return 1;

}

if(i < nLen-2) //取三位

{

temp[3] = 0;

strncpy(temp, buf+i, 3);

if((ch=conver(temp)) != 0)

{

strncpy(temp, buf, i);

temp[i] = 0;

sprintf(temp, "%s%c%s\0", temp, ch, buf+i+3);

if(sortA(temp, nLen-2) == 1) //循环递归调用自己

{

printf("%s->%s\n", temp, buf);

return 1;

}

}

}

}

return 0;

}

char conver(char *buf) //转换,只有3位和1位2种情况

{

if(strcmp(buf, "aSe") == 0) //S-->aSe

return 'S';

if(strcmp(buf, "bBe") == 0) //B-->bBe

return 'B';

if(strcmp(buf, "cCc") == 0) //C-->cCc

return 'C';

return 0;

}

char conver(char ch)

{

if(ch == 'B') //S-->B

return 'S';

if(ch == 'C') //B-->C

return 'B';

if(ch == 'd') //C-->d

return 'C';

return 0;

}

测试信息:

pls input an buffer...

abccdee

Wrong

pls input an buffer...

abcdcee

S->aSe

aSe->aBe

aBe->abBee

abBee->abCee

abCee->abcCcee

abcCcee->abcdcee

This OK!

if you want continue press 'Y'