用两头凑法,找到字符串的最后一个字符,与第一个字符比较。然后各自向中间移动,逐个比较。如果比较中出现不同,则不是回文。当二者相遇时,一直都相同,则字符串为回文。
参考代码如下:
int huiwen(char *s)
{
char *p = s;
while(*p) p++;//找到结束符\0的位置。
p--;//\0的前一个字符,就是字符串的最后一个字符。
while(s{
if(*s != *p) return 0;//发现不同,不是回文。
s++;
p--;//二者向中间移动。
}
return 1;//到相遇后一直相同,是回文。
}
int main()
{
char s[100];
scanf("%s",s);//输入字符串。
if(huiwen(s))//判断是否回文并输出结果。
printf("%s是回文字符串\n",s);
else
printf("%s不是回文字符串\n",s);
return 0;
}
#include
#include
#include
void main()
{
int i;
int bIsSame = 1;//是否相同的标志
int a=0,b;
char f [255];
scanf("%s",f); //读入字符串
b = strlen(f)-1; //获得最后一个字符的序号(字符串总长度减1)
for(i=0;i{
if(f[a++]!=f[b--]) //首尾比较是否相同字符
{
bIsSame = 0; //有不同的就把标志置0,并跳出循环
break;
}
}
if(bIsSame) //相同就输出Y
printf ("Y");
else //不同就输出N
printf ("N");
getchar();//按任意键退出
}
上面的太麻烦了。
比较一下就知道了
标准的判断回文数程序
#include "stdio.h"
main()
{char string[80];
int i,j,n;
gets(string);
n=strlen(string);
j=n-1;
for (i=0;i
if(i==j)printf("Yes\n");
else printf ("No\n");
}
把j换成n,判断是否循环完。
while(a!=0)
{
b=b*10+a%10;
a=a/10;
}
a是需要判断的数字,b是倒置后数字;
如果a==b那么就满足是回文了。