输入一个字符串,判断它是不是回文 C语言

初学者
请写简单些

用两头凑法,找到字符串的最后一个字符,与第一个字符比较。然后各自向中间移动,逐个比较。如果比较中出现不同,则不是回文。当二者相遇时,一直都相同,则字符串为回文。

参考代码如下:

int huiwen(char *s)
{
    char *p = s;
    while(*p) p++;//找到结束符\0的位置。
    p--;//\0的前一个字符,就是字符串的最后一个字符。
    while(s<p)
    {
        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;        
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-21
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

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<b/2;i++) //循环,从0到字符串中间的字符
{
if(f[a++]!=f[b--]) //首尾比较是否相同字符
{
bIsSame = 0; //有不同的就把标志置0,并跳出循环
break;
}
}

if(bIsSame) //相同就输出Y
printf ("Y");
else //不同就输出N
printf ("N");

getchar();//按任意键退出

}
第2个回答  2008-11-21
上面的太麻烦了。
比较一下就知道了
标准的判断回文数程序

#include "stdio.h"
main()
{char string[80];
int i,j,n;
gets(string);
n=strlen(string);
j=n-1;
for (i=0;i<j;i++,j--)
if (string[i]!=string[j])break;
if(i==j)printf("Yes\n");
else printf ("No\n");
}本回答被提问者采纳
第3个回答  2019-04-09
把j换成n,判断是否循环完。
第4个回答  2008-11-21
while(a!=0)
{
b=b*10+a%10;
a=a/10;
}
a是需要判断的数字,b是倒置后数字;
如果a==b那么就满足是回文了。
相似回答