我的作业要求我一直接受用户的输入并输出直到它输入DONE为止的回文。 另外,像Bob这样的单词必须输出true,因为我们必须忽略大小写(大写/小写)。
这是用C ++我的第一次。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string wordInput;
while (wordInput != "DONE")
{
cout << "Please enter a word: ";
cin >> wordInput;
int wordLength = wordInput.length();
int wordHalf = (wordLength / 2);
bool flag = false;
for (int i = 0; i <wordHalf; i++)
{
if (tolower((wordInput[i]) == tolower(wordInput[wordLength-1-i])))
{
flag = true;
}
else
{
flag = false;
break;
}
}
if (flag == true)
{
cout << "true"<<endl;
}
else
{
cout << "false"<<endl;
}
}
return 0;
}
答案 0 :(得分:1)
它可能与'wordInput'被声明两次有关,一次在while循环之前,一次在其中。它混淆了while循环条件正在查看的内容。
答案 1 :(得分:1)
您的单词识别不正确的问题来自此行:
if(tolower((wordInput[i]) == tolower(wordInput[wordLength-1-i])))
如果仔细看,括号设置不正确。尝试以下方法:
if(tolower(wordInput[i]) == tolower(wordInput[wordLength-1-i]))