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

初学者请写简单些... 初学者
请写简单些
展开
 我来答
风若远去何人留
2015-12-11 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部

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

参考代码如下:

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;        
}
魔高丈
2008-11-21 · TA获得超过9506个赞
知道大有可为答主
回答量:2066
采纳率:0%
帮助的人:3475万
展开全部
#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();//按任意键退出

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cboomup
2008-11-21 · TA获得超过652个赞
知道大有可为答主
回答量:455
采纳率:0%
帮助的人:587万
展开全部
上面的太麻烦了。
比较一下就知道了
标准的判断回文数程序

#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");
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
休伯利安之父8
2019-04-09
知道答主
回答量:1
采纳率:0%
帮助的人:758
展开全部
把j换成n,判断是否循环完。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
发光的芋头
2008-11-21 · 超过26用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:70.8万
展开全部
while(a!=0)
{
b=b*10+a%10;
a=a/10;
}
a是需要判断的数字,b是倒置后数字;
如果a==b那么就满足是回文了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式