C++ 中的控制台计算器程序无法正常工作
Console calculator program in C++ not working correctly
我是 C++ 编程的新手,在了解了它的工作原理后,我尝试制作这个控制台计算器应用程序,它从用户 x 和 y 中获取两个数字,然后添加,根据第三个 z 输入对两个数字进行减法、乘法或除法运算。我使用代码块作为IDE,代码如下:
#include <iostream>
//First input value
int x;
//Second input value;
int y;
//Operator value;
int z;
int main()
{
//Asks user for first number
std::cout << "Input first number" << std::endl;
std::cin >> x;
std::cout << "" << std::endl;
//Asks user for second number
std::cout << "Input second number" << std::endl;
std::cin >> y;
std::cout << "" << std::endl;
//Asks user for operation
std::cout << "Input operation: 1 for add, 2 for sub, 3 for multiply, 4 for divide" << std::endl;
std::cin >> z;
//Displaying the desired output
if (z = 1)
{
std::cout << x + y << std::endl;
}
else if (z = 2)
{
std::cout << x - y << std::endl;
}
else if (z = 3)
{
std::cout << x * y << std::endl;
}
else (z = 4);
{
std::cout << x / y << std::endl;
}
//Just a stupid comment
std::cout << "Thank you for using this piece of shit xD. Press any key to end" << std::endl;
return 0;
}
尽管编译没有任何错误,但每个操作输入似乎都是将数字加在一起而不是所需的操作。谁能告诉我我做错了什么?
此 (z = 1)
的值始终为 1,实际上是 true
(任何其他非零值也是如此)。
这就是为什么你总是以第一个选项结束。
一个解决方案可能是使用 (z == 1)
。
您的 if else 条件错误,您使用的是赋值运算符 (=) 而不是等于 (==) 比较运算符。
执行 if(z=1) --> if(z==1) 对剩余的 else 条件执行相同的操作。
请注意,除法将 return 一个整数四舍五入值,因此最好在除法之前将分子转换为 double。
就这样 x/y --> (x*1.0)/y
这里你只是在"if and else if"条件下给'Z'变量(Z=1,Z=2..)赋值,检查值是错误的。但是,在这种情况下,您可以使用 switch case。如下图。
switch(z){
case 1:
std::cout << x + y << std::endl;
break;
case 2:
std::cout << x - y << std::endl;
break;
case 3:
std::cout << x * y << std::endl;
break;
case 4:
std::cout << x / y << std::endl;
break;
default:
std::cout << "select proper option" << std::endl;
}
我是 C++ 编程的新手,在了解了它的工作原理后,我尝试制作这个控制台计算器应用程序,它从用户 x 和 y 中获取两个数字,然后添加,根据第三个 z 输入对两个数字进行减法、乘法或除法运算。我使用代码块作为IDE,代码如下:
#include <iostream>
//First input value
int x;
//Second input value;
int y;
//Operator value;
int z;
int main()
{
//Asks user for first number
std::cout << "Input first number" << std::endl;
std::cin >> x;
std::cout << "" << std::endl;
//Asks user for second number
std::cout << "Input second number" << std::endl;
std::cin >> y;
std::cout << "" << std::endl;
//Asks user for operation
std::cout << "Input operation: 1 for add, 2 for sub, 3 for multiply, 4 for divide" << std::endl;
std::cin >> z;
//Displaying the desired output
if (z = 1)
{
std::cout << x + y << std::endl;
}
else if (z = 2)
{
std::cout << x - y << std::endl;
}
else if (z = 3)
{
std::cout << x * y << std::endl;
}
else (z = 4);
{
std::cout << x / y << std::endl;
}
//Just a stupid comment
std::cout << "Thank you for using this piece of shit xD. Press any key to end" << std::endl;
return 0;
}
尽管编译没有任何错误,但每个操作输入似乎都是将数字加在一起而不是所需的操作。谁能告诉我我做错了什么?
此 (z = 1)
的值始终为 1,实际上是 true
(任何其他非零值也是如此)。
这就是为什么你总是以第一个选项结束。
一个解决方案可能是使用 (z == 1)
。
您的 if else 条件错误,您使用的是赋值运算符 (=) 而不是等于 (==) 比较运算符。
执行 if(z=1) --> if(z==1) 对剩余的 else 条件执行相同的操作。
请注意,除法将 return 一个整数四舍五入值,因此最好在除法之前将分子转换为 double。
就这样 x/y --> (x*1.0)/y
这里你只是在"if and else if"条件下给'Z'变量(Z=1,Z=2..)赋值,检查值是错误的。但是,在这种情况下,您可以使用 switch case。如下图。
switch(z){
case 1:
std::cout << x + y << std::endl;
break;
case 2:
std::cout << x - y << std::endl;
break;
case 3:
std::cout << x * y << std::endl;
break;
case 4:
std::cout << x / y << std::endl;
break;
default:
std::cout << "select proper option" << std::endl;
}