我编写了一个程序来检查输入的字符串是回文还是不是回文,但它总是显示它不是回文
#include <conio.h>
#include <graphics.h>
#include <string.h>
void main(void)
{
int i,len,halflen,flag=1;
char str[50];
clrscr();
printf("Enter a string:\n");
gets(str);
len=strlen(str);
halflen=len/2;
for(i=0;i<halflen;i++)
{
if(str[i]!=str[i+halflen])
flag=0;
break;
}
if(flag)
printf("It is a Palindrome.");
else
printf("It is not a Palindrome.");
getch();
}发布于 2010-07-20 06:03:59
你的中心比较是有缺陷的:
if (str[i] != str[i+halflen]) 这并不是在比较你认为的两个字符。
试着在你的程序中输入"HelloHello“,它会说这是一个回文!
您需要对这两个进行比较:
if (str[i] != str[len-i-1])(并按照另一个答案中的建议修复大括号)
发布于 2010-07-20 06:01:37
为了给你一些线索,我对你的代码做了一些更整洁的缩进:
for(i=0;i<halflen;i++)
{
if(str[i]!=str[i+halflen])
flag=0;
break;
}发布于 2012-06-08 21:46:46
您还可以使用equal函数使用STL检查给定字符串是否为回文字符串。假设您有一个名为x的std::string,然后下面的函数调用确定x是否为回文类型
equal(x.begin(), x.begin() + x.size() / 2, x.rbegin());https://stackoverflow.com/questions/3285432
复制相似问题