判断一个字符串是否回文

xkp123 2009-11-11 10:29:49
用递归方法怎样实现判断输出一个字符串是否回文?
#include<stdio.h>
#include<string.h>
void main()
{
char str[100];
printf("enter a character\n");
scanf("%s",str);
int len=strlen(str);
void huiwen_digui(char dst[],int m);
void huiwen(char dst[],int m);
huiwen(str,len);
huiwen_digui(str,len-1);

}
void huiwen(char dst[],int m)
{
int i,j;
for(i=0,j=m-1;i<=j;i++,j--)
if(dst[i]==dst[j])
continue;
else
break;
if(i>j)
printf("str is a huiwen\n");
else
printf("str isn't a huiwen\n");
}
void huiwen_digui(char dst[],int m)
{
static int n=0;
if (n<=m && dst[n]==dst[m])
{
n++;
m--;
if (n>m)
printf("yes\n");
huiwen_digui(dst,m);
}
}
...全文
1313 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xladykiller 2009-11-12
  • 打赏
  • 举报
回复
有啥问题?


ls的写的看得爽点,,,还有lz不要用拼音,,,有时候用拼音让人看了后,要拼一下,显然是会增加别人的阅读时间的.
hittlle 2009-11-12
  • 打赏
  • 举报
回复
用递归方法的话,可以这样子
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define boolean int

#define TRUE 1
#define FALSE 0

boolean Plaindrome(char *start, char *end){
if(start<=end){
if(*start==*end)
return Plaindrome(start+1,end-1);
else
return FALSE;
}else{
if(*start==*end)
return TRUE;
else
return FALSE;
}
}

int main(int argc, char *argv[])
{

char *str = "abaaba";
if(Plaindrome(str,(str+strlen(str)-1)))
printf("%s is a plaindrome\n",str);
else
printf("%s is not a plaindrome\n",str);
system("pause");
return 0;
}


Plaindrome函数接受字符指针作参数,它们分别指向字符的开始和最后一个字符('\0'之前的那个字母),如果两个所指的值相等,start加1指向第二个字符,end-1指向倒数第二个字符;一直这样下去;递归的结束条件是,start > end
soon 2009-11-11
  • 打赏
  • 举报
回复
有啥问题?

70,021

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧