char s[100];
//char t[100];
int count = 1;
int j=0;
int x,i;
cin >>s;
x=strlen(s);
//cout <<x <<endl;
cout <<s[j] <<endl;
i=x-1;
cout <<s[i] <<endl;
for (int i = x-1; i <= 0; i--)
{
if (s[j] != s[i])
{
count = 0;
}
j++;
}
if ( count )
{
cout <<"YES";
}
else
{
cout <<"NO";
}
return 0;
我想知道给定的字符串是否是回文。这段代码有什么问题?如果正在输入回文,我希望它打印是,如果字符串不是回文,则打印否。但它总是打印YES。没有错误。
答案 0 :(得分:0)
您的代码永远不会输入for loop
,因为条件i = x-1 and i <=0
不会很好assuming your string is not empty
,那么就不需要保留计数变量,因为只要字符串不是匹配你可以打印NO并退出代码。
您可以像下面这样实现:
#include <iostream>
using namespace std;
int main() {
char s[100];
int x,i,j=0;
cin >>s;
x=strlen(s);
i = x-1;
cout <<s[0] <<endl;
cout <<s[i] <<endl;
for (int i = x-1; i >= 0; i--)
{
if (s[j] != s[i])
{
cout <<"NO";
return 0;
}
j ++;
}
cout <<"YES";
return 0;
}