1057:简单计算器
时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
一个最简单的计算器,支持+, -, *, / 四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。然而:
-
如果出现除数为0的情况,则输出:Divided by zero!
-
如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!
【输入】
输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+,-,*,/)。
【输出】
输出只有一行,一个整数,为运算结果。然而:
1.如果出现除数为0的情况,则输出:Divided by zero!
2.如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!
【输入样例】
1 2 +
【输出样例】
3
思路分析:
本题主要对输入符号的判断。
如果符号是加号'+',则输出x+y。
否则,如果符号的是减号'-',则输出x-y。
否则,如果符号是乘号'*',则输出x*y。
否则,如果符号是除号'/'和y=0,则输出"Divided by zero!"。
否则,如果符号是除号'/',则输出x/y。
否则,符号不正确,输出"Invalid operator!"。
数据类型:题目已保证输入和输出的皆是整数,所以可选择int类型。
易错点:
题目中提示输出Divided by zero!和Invalid operator!,但没有用双引号,给人误以为只输出英文,而不输出最后的感叹号。而且样例中也没有提示。而实际上,该感叹号也是要输出的。
求解过程:
声明2个int类型变量x和y。
声明1个char类型变量c。
输入2个整数和1个字符分别给变量x、y和c。
如果变量c等于加号'+',则输出x+y。
否则,如果变量c等于减号'-',则输出x-y。
否则,如果变量c等于乘号'*',则输出x*y。
否则,如果变量c等于除号'/'和y等于0,则输出"Divided by zero!"。
否则,如果变量c等于除号'/',则输出x/y。
否则,变量c是其他字符,输出"Invalid operator!"。
参考代码 - C++:
// 方法1(switch方法 + return 0结束)
#include <iostream>
using namespace std;
int main()
{
int x, y;
char c;
cin >> x >> y >> c;
switch (c)
{
case '+': cout << x + y; break;
case '-': cout << x - y; break;
case '*': cout << x * y; break;
case '/':
switch (y)
{
case 0: cout << "Divided by zero!"; return 0;
default:cout << x / y; return 0;
}
default: cout << "Invalid operator!"; break;
}
return 0;
}
// 方法2(switch方法 + break结束)
#include <iostream>
using namespace std;
int main()
{
int x, y;
char c;
cin >> x >> y >> c;
switch (c)
{
case '+': cout << x + y; break;
case '-': cout << x - y; break;
case '*': cout << x * y; break;
case '/':
switch (y)
{
case 0: cout << "Divided by zero!"; break;
default:cout << x / y;
}
break;
default: cout << "Invalid operator!"; break;
}
return 0;
}
// 方法3(if方法)
#include <iostream>
using namespace std;
int main()
{
int x, y;
char c;
cin >> x >> y >> c;
if (c == '+') cout << x + y;
else if (c == '-') cout << x - y;
else if (c == '*') cout << x * y;
else if (c == '/' && y == 0) cout << "Divided by zero!";
else if (c == '/') cout << x / y;
else cout << "Invalid operator!";
return 0;
}
// 方法4(if+switch方法)
#include <iostream>
using namespace std;
int main()
{
int x, y;
char c;
cin >> x >> y >> c;
if (c == '+' || c == '-' || c == '*' || c == '/')
switch (c)
{
case '+':cout << x + y;break;
case '-':cout << x - y;break;
case '*':cout << x * y;break;
case '/':
if (y == 0)
cout << "Divided by zero!";
else
cout << x / y;
}
else
cout << "Invalid operator!";
return 0;
}
参考代码 - C语言:
#include <stdio.h>
int main()
{
int x, y;
char c;
scanf("%d %d %c", &x, &y, &c);
if (c == '+') printf("%d", x + y);
else if (c == '-') printf("%d", x - y);
else if (c == '*') printf("%d", x * y);
else if (c == '/' && y == 0) printf("Divided by zero!");
else if (c == '/') printf("%d", x / y);
else printf("Invalid operator!");
return 0;
}