C++:我的简单计算器程序无法打印出来。我也认为我的变量命名不正确

C++: My simple calculator program won't print out. I also think my variable naming is incorrect

本文关键字:我的 不正确 名不正 变量 计算器 简单 程序 C++ 打印      更新时间:2023-10-16

计算器程序将接受第一个数字、运算和第二个数字的输入。

我已经设置了程序来选择带有条件语句的操作。但是,程序不输出。

我还尝试使用异或逻辑打印出不正确的操作选择的错误消息。

我认为问题在于我如何使用我的变量。任何批评或建议都值得赞赏。

我是学习C++的新手,所以我正在尝试制作一个简单的双输入计算器。我试图挑战我对变量和条件语句的理解。


void add_func();
void sub_func();
void mult_func();
void divi_func();
int main()
{
        double a;
        double b;
        char op;
        cout << "Input 1st Number:" << endl;
        cin >> a;
        cout << "Select Operation: (1 = +) (2 = -) (3 = *) (4 = /)" << endl;
        cin >> op;
        cout << "Input 2nd Number:" << endl;
        cin >> b;
        if(op == 1)
                cout << add_func();
        if(op == 2)
                sub_func();
        if(op == 3)
                mult_func();
        if(op == 4)
                divi_func();
        if(op != (1 ^ 2 ^ 3 ^ 4))
                cout << "Invalid Operation Selected" << endl;
        return 0;
}
void add_func()
{
        double a;
        double b;
        double c;
        c = a + b;
        cout << a << " + " << b << " = " << c << endl;
}

我截断了代码以仅包含 add 函数。它应该添加数字并打印出结果。

我很

确定这一点:if(op != (1 ^ 2 ^ 3 ^ 4))没有做你认为的那样。

^运算符是按位排除 OR,如果两个输入均为 0,或者两个输入均为 1,则结果中给出 0 位。如果一个输入是 1,另一个是 0,则结果为 1。

这些操作是从左到右评估的,因此让我们一次完成一个操作。为了清楚地说明结果是如何产生的,我们将包括数字的二进制等价物:

  • 1 ^ 2 -> 0001 ^ 0010 -> 0011 ,这是3
  • 3 ^ 3 -> 0011 ^ 0011 -> 0000 ,这是0
  • 0 ^ 4 -> 0000 ^ 0100 -> 0100 ,这是4

所以你的代码等效于:if (op != 4) .

您需要使用函数参数在函数之间传递值。不同函数中的两个变量永远不会是同一个变量,即使它们具有相同的名称。

你必须选择是要在主函数中还是在添加函数中执行cout <<。你似乎在尝试两者兼而有之。

这是操作方法(我选择在添加功能而不是主函数中执行cout <<(。

void add_func(double x, double y);
...
if(op == 1)
    add_func(a, b);
...
void add_func(double x, double y)
{
    double sum = x + y;
    cout << x << " + " << y << " = " << sum << endl;
}

查看 add 函数中的参数(我称之为 xy,您可以随心所欲地称呼它们(。并查看调用 add 函数时ab变量作为参数传递。

你的C++书必须讨论函数参数和传递参数,这绝对是C++编程的基础。我认为是时候修改那一章了。

请考虑使用简单的在线教程来学习基础知识。例如:https://www.tutorialspoint.com/cplusplus/index.htm或:https://www.w3schools.com/cpp/default.asp此外,在编写代码时,请尝试选择最简单的解决方案。无论如何,以后会变得复杂:)对于简单的计算器,一个简单的开关就足够了。请考虑以下 C 代码:

#include <iostream>
int main()
{
    double a;
    double b;
    char op;
    while(true)
    {
        std::cout << "Input 1st Number: " << std::endl;
        std::cin >> a;
        std::cout << "Select Operation: (+) (-) (*) (/) or (x) to exit: " << std::endl;
        std::cin >> op;
        std::cout << "Input 2nd Number: " << std::endl;
        std::cin >> b;
        switch (op)
        {
        case '+':
            std::cout << std::to_string(a+b) << std::endl;
            break;
        case '-':
            std::cout << std::to_string(a-b) << std::endl;
            break;
        case '*':
            std::cout << std::to_string(a*b) << std::endl;
            break;
        case '/':
            std::cout << std::to_string(a/b) << std::endl;
            break;
        case 'x':
            return 0;
            break;        
        default:
            std::cout << "Invalid Operation Selected" << std::endl;
            break;
        }
    }
}

它很丑陋,它有丑陋的输出,但它可以完成这项工作:)尝试尝试,例如实现更好的输出。将其从 switch 语句更改回 if 语句,并根据需要添加函数调用。在在线提供的教程中了解上述概念,如果您遇到困难,请不要羞于提问。失败和再次失败是可以的,这就是你学习的方式——通过努力变得更好:)