我对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;
}
即使它没有任何错误编译,每个操作输入似乎都将数字加在一起而不是所需的操作。谁能告诉我这里我做错了什么?
答案 0 :(得分:2)
这里你只是在“if和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;
}
答案 1 :(得分:1)
您的if else条件错误,您正在使用赋值运算符(=)而不是equalto(==)比较运算符。
if if(z = 1) - &gt; if(z == 1)对其余条件保持不变。
请注意,除法将返回整数舍入值,因此最好在除法之前将分子转换为加倍。
只做x / y - &gt; (X * 1.0)/ Y
答案 2 :(得分:0)
此(z = 1)
的值始终为1,实际上为true
(因为任何其他非零值也是如此)。
这就是为什么你总是在第一个选项中结束。
解决方案可能是使用(z == 1)
。