C ++中的控制台计算器程序无法正常工作

时间:2017-12-06 06:26:23

标签: c++ codeblocks

我对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;
}

即使它没有任何错误编译,每个操作输入似乎都将数字加在一起而不是所需的操作。谁能告诉我这里我做错了什么?

3 个答案:

答案 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)