-3
我有一个任务来创建一个简单的计算器,但我无法让程序退出;它仍然处于连续循环。我究竟做错了什么?简单的计算器C++,如何正确地循环和退出?
这项任务很简单: 编写一个C++程序,使用执行加法,减法,乘法和除法操作的函数(确保覆盖的情况以避免被零除)来模拟基本的计算器。
显示可执行的操作列表的菜单,并从用户那里获得关于他的计算选择的输入。根据用户的操作选择,从用户那里输入号码。假设所有输入值都是double类型的。计算必须使用返回double值的函数来实现。计算结果应显示在屏幕上。
#include <iostream>
#include <stdlib.h>
using namespace std;
double add(double num1, double num2)
{
return num1 + num2;
}
double subtract(double num1, double num2)
{
return num1 - num2;
}
double multiply(double num1, double num2)
{
return num1 * num2;
}
double divide(double num1, double num2)
{
if (num2 != 0)
return num1/num2;
else
cout << "Invalid entry";
}
int main()
{
double num1, num2;
char operation, q;
cout << "Calculator functions:" << endl;
cout << "Enter 'm' for Multiplication" << endl;
cout << "Enter 'd' for Division" << endl;
cout << "Enter 'a' for Addition" << endl;
cout << "Enter 's' for Subtraction" << endl;
cout << "Select operation or 'q' to quit program" << endl;
cin >> operation;
do
{
if (operation == 's' || operation == 'S')
{
cout << "Enter first number" << endl;
cin >> num1;
cout << "Enter first number" << endl;
cin >> num2;
cout << "The difference is " << subtract(num1, num2) << endl;
}
if (operation == 'a' || operation == 'A')
{
cout << "Enter first number" << endl;
cin >> num1;
cout << "Enter first number" << endl;
cin >> num2;
cout << "The sum is " << add(num1, num2) << endl;
}
if (operation == 'm' || operation == 'M')
{
cout << "Enter first number" << endl;
cin >> num1;
cout << "Enter first number" << endl;
cin >> num2;
cout << "The product is " << multiply(num1, num2) << endl;
}
if (operation == 'd' || operation == 'D')
{
cout << "Enter numerator" << endl;
cin >> num1;
cout << "Enter denominator" << endl;
cin >> num2;
cout << "The quotient is " << divide(num1, num2) << endl;
}
cout << "Select operation or 'q' to quit program" << endl;
cin >> operation;
} while (operation != 'q' || operation != 'Q');
cout << "Goodbye!" << endl;
system("pause");
return 0;
}
'而(!操作= 'Q' ||操作= 'Q');'=>'而(!操作= 'Q' &&操作= 'Q');' –
'operation!='q'|| operation!='Q''对于任何值都是成立的。您应该遵循@πάνταῥεῖ的建议,或者始终将您的输入字符转换为小写字母(或上部字符,您的选择),然后您只需检查单个字符。 –
在附注中 - 您是否考虑过首先将'operation'转换为大写或小写,并跳过所有的OR? –