如何编写一个小计算器,将四个算术运算中的一个作为输入,这两个运算的两个参数,然后打印出结果? 就这么简单,我不需要一个真正的计算器。
这是我到目前为止所尝试的内容,但是它不起作用:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int x,y,result;
string arithmatic;
cout<<"enter the first number:";
cin>>x;
cout<<"enter the second number:";
cin>>y;
cout<<"use one of the four artimatic operations /, *, + or - :";
cin>>arithmatic;
if (arithmatic=="/" )
result=x/y;
cout<<"x / y ="<<result;
if (arithmatic == "*")
result=x*y;
cout<<"x * y ="<<result;
if (arithmatic == "+")
result = x + y;
cout<<"x+y ="<<result;
if (arithmatic == "-")
result = x-y;
cout<<"x-y ="<<result;
else
cout<<"what is this? i said use arithmatic operations!";
return 0;
}
我知道这个程序有很多问题,我刚刚开始学习,这种做法出现在书中。
答案 0 :(得分:2)
如果这是请求的操作,您总是将结果写入控制台。
if (arithmatic =="/")
result=x/y;
cout<<"x / y ="<<result;
if (arithmatic == "*")
result=x*y;
cout<<"x * y ="<<result;
...
应该是:
if (arithmatic =="/") {
result=x/y;
cout<<"x / y ="<<result;
}
if (arithmatic == "*") {
result=x*y;
cout<<"x * y ="<<result;
}
...
此外,由于案例是独占的,您应该在连续的块中使用else if
。另一种选择是使用switch (...) { case ... }
,但是它对单个字符等整数值进行操作。取字符串的第一个字符来应用此方法:
switch (arithmatic.at(0)) {
case '/':
result = x / y;
break;
case '*':
result = x * y;
break;
case '+':
result = x + y;
break;
case '-':
result = x - y;
break;
default:
cout << "what is this? i said use arithmatic operations!" << endl;
exit(1); // abort execution
}
cout << "x " << arithmatic << " y = " << result << endl;
另外,您应该考虑到您目前只对整数进行操作。不仅输入不能是任何小数,而且你正在进行整数除法,即使必须舍入(在这种情况下,它是向下舍入),也会产生整数。要解决此问题,请为操作数使用double
类型而不是int
以获得良好的准确性(double
可能有大约17个有意义的十进制数字。)
请注意,拼写算术错误。我在上面的代码中使用了错误的拼写。
答案 1 :(得分:1)
几个问题:
if
陈述之间遗漏了很多大括号。这导致在整个代码中多次调用std::cout
。if
终止的else
语句,而是使用if
else if
else
。答案 2 :(得分:1)
else
最后只是晃来晃去。必须使用if
语句。通常的写作方式是
if (first)
do_first();
else if (second)
do_second();
else if (third)
do_third();
else
do_everything_else();
现在,您的练习是将此结构与@leemes向您展示的大括号结合起来。