C++,编写函数,利用指针判断一个字符串是否是回文。所谓回文就是顺读和倒读都是一样的。如eye,l

C++,编写函数,利用指针判断一个字符串是否是回文。所谓回文就是顺读和倒读都是一样的。如eye,level等

主要问题在于如何比较头部和尾部的字符是否相同。要获取字符串头部和尾部的字符,可以用数组下标来实现。只要我们知道字符串的长度,就可以用第一个字符和最后一个字符比较,第二个字符和倒数第二个比较,...,最后得出结果。字符串是以\n结束的,因此可以从字符串头部遍历字符串,求出字符串长度。这样,经过分析,我们只需要知道字符串头部就行了,所以函数只设置一个参数:指针。

函数体部分,首先要求出字符串长度,然后开始比较。可以直接用循环实现。具体代码见下面:

bool function(char* str)
{
bool flag=true;
int n=0;
//以下为求出字符串的长度
while(str[n])
{n++;}
//以下为比较前后字符串是否一样
for(int i=0;i<n/2;i++)
{
if(str[i]!=str[n-i-1])
{
//如果有一个字符不一样,后面的就不必再判断了,为假
flag=false;
break;
}
}
return flag;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-30
#include <iostream>
using namespace std;
int main()
{
char str[128], *p1, *p2;
while (gets(str)){
p1 = p2 = str;
while (*p2 != '\0')p2++;
p2--;
while (p1 < p2){
if (*p1 != *p2){
break;
}
p1++;
p2--;
}
if (p1 < p2){
printf("NO\n");
}
else {
printf("YES\n");
}
}
return 0;
}

本回答被网友采纳
相似回答