【题目5-6】编程判断输入的一串字符串是否为“回文”,所谓“回文”是指顺读和倒读都一样的字符串,入

【题目5-6】编程判断输入的一串字符串是否为“回文”,所谓“回文”是指顺读和倒读都一样的字符串,入“level”和“ABCCBA”都是回文。 分析: (1) 运用两个指针对字符串的分别指向字符串的首和尾 (2) 比较首位指针所指向的内容,若相等则首指针向后移动,尾指针向前移动,直到首位指针交换,比较结束 (3) 在比较过程中,若发现有首尾不同的情况,则说明字符串为非回文字符串,否则则是回文字符串 【题目5-6】代码:

int isPalindrome(char *const str)
{
    if(str)
    {
        if(strlen(str) == 1 || strlen(str) == 0)//长度是1或者0的是回文
        {
            return 1;
        }
        char *p = str, *q = p + strlen(str) - 1;
        while(*p == *q && p < q)
        {
            p++;
            q--;
        }
        return p >= q;
    }
    return 0;
}
int main()
{
    //测试代码
    printf("%d %d %d %d %d \n", 
    isPalindrome(""), 
    isPalindrome("aba"), 
    isPalindrome("abba"), 
    isPalindrome("abc"), 
    isPalindrome("acbc"));
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-01
#include "stdio.h"
#include "string.h"
int main(void){
    char a[50],b[50];
    printf("Input a string...\n");
    scanf("%50s",a);
    if(strcmp(strrev(strcpy(b,a)),a)==0)
        printf("Yes!\n");
    else printf("No!\n");
    return 0;
}

第2个回答  2021-05-10
#include <stdio.h>
#include <string.h>

int main()
{
int i,j;
char a[80],b[80],*str1,*str2;
i=0;
while((a[i]=getchar())!='\n')
i++;
a[i]='\0';
i--;
j=0;
for(i>=0;i--;)
{
i--;
b[j]=a[j];
j++;
}
b[j]='\0';
str1=a;
str2=b;
if(strcmp(str1,str2)==0)
{
printf("YES");
}
else
{
printf("NO");
}
return 0;
}
相似回答