为什么无论大小写,程序都不会输出 true?
Why isn't the program outputting true regardless of case?
我的作业要求我一直接受用户的输入并输出它是否是回文,直到输入DONE这个词。
此外,像 Bob 这样的词必须输出 true,因为我们必须忽略大小写 (upper/lower.)
这是我第一次使用 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;
}
这可能与 'wordInput' 被声明了两次有关,一次是在 while 循环之前,一次是在其中。它混淆了 while 循环条件正在查看的内容。
您的字词未被正确识别的问题来自这一行:
if(tolower((wordInput[i]) == tolower(wordInput[wordLength-1-i])))
如果你仔细看,你把括号放错了。试试这个:
if(tolower(wordInput[i]) == tolower(wordInput[wordLength-1-i]))
我的作业要求我一直接受用户的输入并输出它是否是回文,直到输入DONE这个词。 此外,像 Bob 这样的词必须输出 true,因为我们必须忽略大小写 (upper/lower.)
这是我第一次使用 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;
}
这可能与 'wordInput' 被声明了两次有关,一次是在 while 循环之前,一次是在其中。它混淆了 while 循环条件正在查看的内容。
您的字词未被正确识别的问题来自这一行:
if(tolower((wordInput[i]) == tolower(wordInput[wordLength-1-i])))
如果你仔细看,你把括号放错了。试试这个:
if(tolower(wordInput[i]) == tolower(wordInput[wordLength-1-i]))