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

Refine my code/program where did I go wrong?

本文关键字:出错 错了 我的 代码 程序 优化      更新时间:2023-10-16
#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;
}

每次我运行程序时,如果我回答否(N)结果始终是 0 而不是 1(铁头勋爵 = 铁头勋爵 + 1)

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

您的代码原则上没问题,但是您可能会遇到问题,即根据"Y"和"N"检查"answerswer"的双值逻辑,没有失败的情况。我怀疑你遇到了EOL或大小写或字符转换问题,同时失败了,因此永远不会改变主。

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

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

您的代码是正确的,但对用户输入的情况很敏感(它以不同的方式处理Nn的用户输入)。 您可以通过在检查之前将输入转换为已知案例来消除用户混淆的可能来源。 您可以使用上部或下部执行此操作

cin >> answer;
answer = toupper(answer);

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

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