编写程序,读取一个字符串,然后判断这个字符串是否为回文(忽略非字母符号和字母大小写后,从左向右读和从右向左读完全一样)。例如:
He lived as 56 * a devil, eh?
是一个回文。要求用指针实现。
#include <stdio.h>
int judge2(char a, char b)
{
if(a==b)
return 0;
else if(a<b)//忽略大小写的区别
return b-a-32;
else
return a-b-32;
}
int judge1(const char *str)
{
const char *start=str;
const char *end=str;
while (*end!=0)
end++;
while(start<end)
{
while ((*start<'A')||(*start>'z')||(*start>'Z'&&*start<'a')) //非字符符号忽略
start++;
while ((*end<'A')||(*end>'z')||(*start>'Z'&&*start<'a'))
end--;
if (judge2(*start,*end))
break;
start++;
end--;
}
if (start<end)
return 0;
else
return 1;
}
int main()
{
char str[666];
printf("请输入一串字符:\n");
fgets(str,666,stdin);
if (judge1(str)!=0)
printf("此字符串是回文数!");
else
printf("此字符串不是回文数!");
return 0;
}
欢迎指正