写一个算法,用以判断输入字符串是否为回文

如题所述

#include <stdio.h>
#define SIZE 50
int isPalindrome(char str[]);
int elementSize=0;
static int i=0;
int main()
{
int j=0,result;
char element,str[SIZE];
printf("请输入字符串,以回车结束:\n");
/*以下用循环结构读入字符数组的元素,防止了因字符串中含有空格而不能全部读入的情况*/
scanf("%c",&element);
while(element!='\n')
{
str[j]=element;
elementSize++;//记录了数组中已有元素的个数
j++;
scanf("%c",&element);
}

if(isPalindrome(str))
printf("该字符串是回文字符串\n");
else
printf("该字符串不是回文字符串\n");

// system("pause");
return 0;
}
/*函数功能:判断字符串是否为回文串*/
int isPalindrome(char str[])
{
/*把数组元素前后对应比较,即第一个元素与最后一个元素比较是否相等,依此类推*/
if(i>=elementSize-i-1)//说明是回文串
return 1;

else if(str[i]==str[elementSize-i-1])
{
i++;//i为全局静态变量
isPalindrome(str);
}

else //出现不相等的情况,说明不是回文串,返回0
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-17
#include <stdio.h>
#include <string.h>

int isHuiWen(char* p)
{
char* q = p + strlen(p) - 1;
while(p < q && *p == *q)
++p, --q;
return p >= q;
}

int main(void)
{
char a[111];
gets(a);
printf("%s\n", isHuiWen(a) ? "True" : "False");
return 0;
}
相似回答