我正在编写一个非常基本的计算器程序,当用户输入字符“N”时,该程序会循环然后退出。当N' N' N' N' N' 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');
}
答案 0 :(得分:0)
尝试
while (Operand != 'N');
:)
答案 1 :(得分:0)
你的主要问题在于程序的逻辑。为了达到Num1 != 'N'
,它要求您至少输入3个字符。如果你检查第一个cin或任何cin之后会更方便。
另外,如果你检查&#39; n&#39;同样,你可能没有按下SHIFT。
答案 2 :(得分:0)
嗯,你说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;
}
答案 3 :(得分:0)
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;
...
}
答案 4 :(得分:0)
我认为你最好使用不同的变量来处理终止。使用这样的东西:
do {
cout << "Do you want to continue (Y/N)?"
cin >> terminate;
if (terminate == 'N')
break;
//your code here
} while(terminate != 'N');