优化我的代码/程序,我哪里出错了
Refine my code/program where did I go wrong?
#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;
}
您的代码是正确的,但对用户输入的情况很敏感(它以不同的方式处理N
和n
的用户输入)。 您可以通过在检查之前将输入转换为已知案例来消除用户混淆的可能来源。 您可以使用上部或下部执行此操作
cin >> answer;
answer = toupper(answer);
我只是自己尝试了一下,发现如果我回答 N,我得到了预期的答案 (1)。但是,如果我点击 n,它会返回为 0。你确定你打的是 N 而不是 n?
最好使用 1 和 0 而不是 N 和 Y。它更容易被系统识别
相关文章:
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- 首要问题的答案让值班员搞错了
- 看起来is_nothrow_constructible_v()在MSVC中被破坏了,我错了吗
- .h 和.cpp文件分离时出错,但仅使用 .h 文件时没有错误.我做错了什么?
- 我的C++线程做错了什么?
- 如何正确使用 >=?(a+f()+c)>=0 错了吗?
- 谁能告诉我我用 getline 做错了什么 (cpp) 格式
- 没有输出的合并排序我做错了什么?
- 我正在尝试使用 while 循环从字符串中删除字母,直到没有字母。我在这里做错了什么?
- 在C++中使用 AKS 素数测试计算双胞胎素数 我做错了什么?
- 指针相关的UE4崩溃.我的指针哪里错了?
- 我一直试图弄清楚我在这个链表程序中做错了什么
- 我正在尝试学习如何在 c++ 中传递指针,但出现错误:没有用于调用"test"的匹配函数。我做错了什么?
- FFMPEG,C++,内存泄漏,我做错了什么?
- 我做错了什么?反向字符串 C++
- 我在这个课上做错了什么?
- 我在尝试将多个值push_back向量时出错。我做错了什么?
- 过载时出错 <<。我在这里做错了什么?
- 使用针对Win32的英特尔C++编译器编译Qt时出错,我做错了什么