我用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很新)
答案 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
//...
}