无论大小写为何,程序为何输出的结果都不正确?

时间:2019-02-02 06:37:02

标签: c++ palindrome

我的作业要求我一直接受用户的输入并输出直到它输入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;   
}

2 个答案:

答案 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]))