我刚刚用 C++ 创建的计算器程序只做加法!我的代码有什么问题?

Calculator program that I just created in c++ does only addition! Whats wrong with my code?

我用 C++ 编写了一个计算器程序(在看到 learncpp.com {1.10a 节}中的模型后)

创建它是为了加、减、乘、除...

但它总是将给定的两个数字相加。

它编译得很好,但只是增加了!即使我在运算符选择过程中选择了任何数字(即 1 表示添加,2 表示子等),例如 2,3 甚至 25 或 2678,它只是将两个给定的数字相加......(只有当我选了 1 对吧?)

我花了几个小时试图解决,但我对 C++ 太陌生了,我不知道如何解决!

请大家帮忙...

这是我的程序

#include "stdafx.h"
#include <iostream>

int GetNo()
{
    std::cout << "Enter your Number: ";
    int a;
    std::cin >> a;
    return a;
}

int GetOp()
{
    std::cout << "Your Operator?" << std::endl;
    std::cout << "  (1 = +)" << std::endl;
    std::cout << "  (2 = -)" << std::endl;
    std::cout << "  (3 = *)" << std::endl;
    std::cout << "  (4 = /)" << std::endl;
    int o;
    std::cin >> o;
    return o;
}

int Calc(int x, int op, int y)
{
    if (op == 1);
        return x + y;
    if (op == 2);
        return x-y;
    if (op == 3);
        return x*y;
    if (op == 4);
        return x/y;

        return -1;

}

void PRINT(int q)
{
    std::cout << "Therefore, Your Result is, " << q << std::endl;
}

int main()
{
    int x = GetNo();
    int opr = GetOp();
    int y = GetNo();
    int q = Calc(x,opr,y);
    PRINT(q);
}

TQ 伙计们!我在等待有用的回复... 如果可能的话,更详细一点...(因为我是 cpp 的新手)

    if (op == 1);//this semicolon makes the statement end here so it tests the condition and ends the statement 
    return x + y;//so this is an independent statement and will always be executed

因此删除所有 if(condition) 语句末尾的分号

当你把;在 if 子句之后,它意味着 if 是空的 block.Therefore 无论语句是真还是假 if 旁边的语句总是 excecuted.So 你的代码

   if (op == 1);
    return x + y;

计算结果为:

  if (op == 1)
      {            //empty block
      }
  return x + y; // Outside if statement

因此总是返回加法。

您的代码具有以下内容:

int Calc(int x, int op, int y) { 如果(op == 1); returnx+y; 如果(op == 2); return x-y; 如果 (op == 3);

问题是;在 if (op == 1); 之后。这是正在评估,没有任何反应,那么你总是在执行 return x + y;.

做循环的更好方法是始终包含括号,这样这些简单的错误就不太常见,例如:

如果(op==1) { returnx+y; }

你的错误在于 calc()Function.Take 一看:

int Calc(int x, int op, int y)
{
if (op == 1);  //the ; is not needed, remove it! 
    return x + y;
//same happens with the rest of the conditions, remove all semicolons after the if conditions 
//...
}