c语言回文字符串的判断和输出

//你的错误是递归调用的时候,I总是0,所以应该用静态int i = 0。

#包含stdio.h

#包含stdlib.h

#包含字符串. h

Int hui(char aC语言战士。判断字符串是否为回文字符串,输出yes或no输入:hello world输出:no oppo yes level yes。 代码可以这样写,对你来说有点麻烦。

p = a;

q = p strlen(a)-1;

while(pq)

if(*p!=*q -)

打破;

如果(p=q)

Printr("是回文");

其他

Printf("非回文");

C语言中回文串的判断,请高手帮忙。 # includestdio.h

#includestring.h

int ReverseStr(char *str)

{//如果函数返回1,则可以实现回文效果,否则不能。

int i,j,delcount

j = strlen(str)-1;//记录尾下标

del count = 0;//通过删除字符记录次数。

for(I = 0;ij;我,j -)

{//从头到尾扫描匹配字符串

If(delcount1)//如果删除次数多于一次,则返回。

返回0;

If(str[i]==str[j])//如果检测到第一个和最后一个字符相等,则继续比较。

继续;

其他

{//不相等时,测试是否能达到回文效果。

if(str[i 1]==str[j]i 1j)

{//如果前半部分中当前检测到的字符的最后一个字符等于后半部分中当前检测到的字符。

//表示删除前半部分当前检测到的字符可以达到回文效果,下标后移。

我;

德尔计数;

}

else if(str[i]==str[j-1]ij-1)

{//如果后半部分当前检测到的字符的前一个字符等于前半部分当前检测到的字符。

//表示删除后半部分当前检测到的字符可以实现回文效果,下标前移。

j-;

德尔计数;

}

else if(str[i]!=str[j](i 1j||ij-1))

{//如果前后删除一个字符都达不到效果,说明这样匹配不到,就无法形成回文。

返回0;

}

}

}

返回1;

}

int main()

{

char input str[80];

//输入字符串

Printf("输入一个字符串:");

gets(input str);

//通过删除1个字符或0个字符判断字符串是否可以回文。

int flag = reverse str(input str);

if(标志)

printf(" Y \ n ");

其他

printf(" N \ N ");

返回0;

}

c语言判断一串字符是否回文。 你需要比较整个字符串得到结论并输出yes而不是仅仅判断一个字符相等。

# includestdio.h

#includestring.h

const int maxn = 256

int main(){ int I;char str[maxn];int len,b;

scanf("%s ",str);len = strlen(str);//在输入字符串之后计算长度,而不是在输入之前。

for(i=0,b = 1;I = len/2;我)

if(str[i]!= str[len-I-1]){ b = 0;打破;}//如果发现不等式,则不是回文。

如果(b!= 0)printf(" yes ");else printf(" no ");//等到循环结束再下结论。

返回0;//main是用int修饰的,所以必须返回整数值。

}

输入一个字符串,判断是否是回文C语言。 找到字符串的最后一个字符,并将其与第一个字符进行比较。然后移到中间,一个一个对比。如果比较中有差异,就不是回文。当它们相遇并且总是相同时,字符串是回文。

参考代码如下:

int汇文(char *s)

{

char * p = s;

while(* p)p;//找到终止符的位置\0。

p-;//\0的第一个字符是字符串的最后一个字符。

白色(sp)

{

如果(*s!= *p)返回0;//发现不同,不是回文。

s;

p-;//两者都向中间移动。

}

返回1;//从认识到现在都是这样,是回文。

}

int main()

{

char s[100];

scanf("%s ",s);//输入字符串。

If(huiwen(s))//判断是否回文并输出结果。

Printf("%s是回文字符串\n ",s);

其他

Printf("%s不是回文字符串\n ",s);

返回0;

}

相关文章

发表新评论