我刚刚在c ++中创建的计算器程序只添加了!我的代码有什么问题?

时间:2015-06-30 18:42:54

标签: c++ calculator

我用c ++编写了一个计算器程序(在learncpp.com上看到一个模型后{section 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很新)

4 个答案:

答案 0 :(得分:3)

    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)语句

末尾的分号

答案 1 :(得分:3)

当你放一个;在if子句之后,它意味着if是一个空块。因此,如果该语句是真还是假,if旁边的语句总是被删除。所以你的代码

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

评估为:

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

因此总是会返回添加内容。

答案 2 :(得分:0)

您的代码包含以下内容:

int Calc(int x,int op,int y)    {        if(op == 1);            返回x + y;        if(op == 2);            返回x-y;        if(op == 3);

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

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

if(op == 1)    {      返回x + y;    }

答案 3 :(得分:0)

你的错误在calc()功能中。看看:

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 
//...
}