接受char(N)以退出计算器循环
Accepting char(N) to exit calculator loop
我正在编写一个非常基本的计算器程序,该程序循环,然后在用户输入字符'N'时退出。当输入"N"时,我似乎无法让程序退出。我已经轻松地解决了所有的问题,但我在融入这一点时遇到了问题。
我已经确信有人会说一些关于使用void main()
的事情,这正是我的导师想要的。我也知道while语句(Num1 != 'N'
)的条件不正确,它现在只是一个占位符,因为这是我需要帮助弄清楚的。
#include <iostream>
using namespace std;
void main()
{
int Num1, Num2, Plus, Minus, Divide, Mod, Mult;
char Operand;
do
{
cout << "Enter two separate integers ---> ";
cin >> Num1 >> Num2;
cout << "nEnter desired operand ---> ";
cin >> Operand;
cout << endl;
switch (Operand)
{
case '+':
Plus = (Num1 + Num2);
cout << Num1 << " + " << Num2 << " = " << Plus << endl;
break;
case '-':
Minus = (Num1 - Num2);
cout << Num1 << " - " << Num2 << " = " << Minus << endl;
break;
case '*':
Mult = (Num1 * Num2);
cout << Num1 << " * " << Num2 << " = " << Mult << endl;
break;
case '/':
Divide = (Num1 / Num2);
cout << Num1 << " / " << Num2 << " = " << Divide << endl;
break;
case '%':
Mod = (Num1 % Num2);
cout << Num1 << " % " << Num2 << " = " << Mod << endl;
break;
}
}
while (Num1 != 'N');
}
Num1是一个整数,永远不会等于'N'。请尝试初始化字符串缓冲区,然后检查它是否以"N"开头。如果为true,则退出,否则将字符串转换为整数。你的代码可以更好地优化如下:
int Num1, Num2, Plus, Minus, Divide, Mod, Mult;
char Operand;
string buffer;
while(true) {
cout << "Enter two separate integers ---> ";
cin >> buffer;
if(buffer.at(0) == 'N') break; /* Checks for 'N' as first char and breaks out */
Num1 = atoi(buffer.c_str()); /* Sets Num1 to the integer value of buffer */
cin >> Num2;
cout << "nEnter desired operand ---> ";
cin >> Operand;
cout << endl;
...
}
尝试
while (Operand != 'N');
:)
您的主要问题存在于程序的逻辑中。因为为了达到Num1 != 'N'
,它要求您至少输入3个字符。如果你检查第一次或任何一次cin之后,会更方便。
此外,如果你也检查"n",那会更好,因为你可能没有按SHIFT键。
您说过Operand != 'N'
有效,并且希望它适用于所有输入类型。我的建议(对不起,我知道我的c++是垃圾)是一个接一个地阅读它们,每次阅读后进行分支:
cin >> Num1;
if(Num1 == 'N')
break;
cin >> Num2;
if(Num2 == 'N')
break;
cin >> Operand;
if(Operand == 'N')
break;
或者循环进行:
#define NUMBER_OF_INPUTS 3
for(int i=0 ; i<NUMBER_OF_INPUTS ; i++){
cin >> input[i];
if(input[i] == 'N')
return;
}
我认为最好使用不同的变量来处理终止。使用类似的东西:
do {
cout << "Do you want to continue (Y/N)?"
cin >> terminate;
if (terminate == 'N')
break;
//your code here
} while(terminate != 'N');
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 创建LinkedList退出,返回代码为-11(SIGSEGV)
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 如何让LLDB在成功时退出,在失败时等待
- C++控制台应用程序阻止退出
- 程序在执行程序的其余部分之前退出
- 构造函数在退出函数时无法初始化一个参数
- 为什么异常不退出程序?
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- 退出简单while循环时出现问题
- 使用vscode调试时,GDB意外退出
- 使用 BMI 计算器对C++中的数字进行四舍五入的问题
- 我在c ++矩阵计算器程序中找不到错误
- pclose() 不会给我进程退出代码
- 为什么系统函数总是在C++中返回已转移的退出状态?
- C++从另一个函数退出函数
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- C++计算器退出
- 接受char(N)以退出计算器循环
- 简单的c++连续计算器,无法退出程序