我刚刚用 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
//...
}
我用 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
//...
}