接受char(N)以退出计算器循环

Accepting char(N) to exit calculator loop

本文关键字:退出 计算器 循环 char 接受      更新时间:2023-10-16

我正在编写一个非常基本的计算器程序,该程序循环,然后在用户输入字符'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');