0
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    int LordIronhead = 0; 
    char answer;

    cout<<"Is Lord Ironhead present? Y/N.\n";
    cin >> answer;

    if (answer == 'Y')
    {
        LordIronhead=0;
    }
    else if (answer == 'N')
    {
        LordIronhead= LordIronhead+1;
    }

    cout<< ""<<LordIronhead<<"\n"; 

    system("PAUSE");
    return 0;
}

每次我运行程序并且如果我回答 NO (N) 结果总是 0 而不是 1 (LordIronhead = LordIronhead + 1)

我可以知道我的错误在哪里吗?

4

4 回答 4

3

您的代码是正确的,但对用户输入的大小写敏感(它对用户输入的处理方式N不同n)。在检查输入之前,您可以通过将输入转换为已知大小写来消除可能造成用户混淆的来源。您可以使用touppertolower来执行此操作

cin >> answer;
answer = toupper(answer);
于 2013-01-30T14:11:53.980 回答
3

您的代码原则上没问题,但您可能会遇到“答案”的二值逻辑与“Y”和“N”进行检查而没有失败案例的问题。我怀疑您遇到了 EOL 或大小写或字符转换问题,同时遇到了两个如果,因此永远不会改变主。

要显示问题,请尝试使用 else 语句:

else if (answer == 'N')
{
     LordIronhead= LordIronhead+1;
} else {
     std::cout << "Invalid answer '" << answer << "'" << std::endl;
}
于 2013-01-30T14:08:07.093 回答
1

我只是自己尝试了一下,发现如果我回答 NI 得到了预期的答案(1)。但是,如果我击中 n,它会返回为 0。你确定你击中的是 N 而不是 n 吗?

于 2013-01-30T14:08:14.040 回答
0

更好地使用 1 和 0 而不是 N 和 Y。它更容易被系统识别

于 2013-01-30T14:09:30.003 回答