优化我的代码/程序我哪里出错了?

时间:2013-01-30 14:02:23

标签: c++

#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 个答案:

答案 0 :(得分:3)

原则上你的代码很好,但你可能会遇到问题,“回答”的二值逻辑是针对“Y”进行检查而针对“N”进行检查而没有直通案例。我怀疑你正在遇到EOL或案件或角色转换问题,如果是这样的话,那就不会改变主。

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

else if (answer == 'N')
{
     LordIronhead= LordIronhead+1;
} else {
     std::cout << "Invalid answer '" << answer << "'" << std::endl;
}

答案 1 :(得分:3)

您的代码是正确的,但对用户输入的情况很敏感(它以不同方式处理Nn的用户输入。您可以在检查之前将输入转换为已知案例,从而消除可能的用户混淆源。您可以使用touppertolower

执行此操作
cin >> answer;
answer = toupper(answer);

答案 2 :(得分:1)

我亲自尝试过,发现如果我回答N,我得到了预期的答案(1)。但是,如果我点击n,它会返回0.您确定要击中N而不是n吗?

答案 3 :(得分:0)

最好使用1和0而不是N和Y.它更容易识别系统