问题描述:
四则运算也称为算术运算,也就是加减乘除。人们写的算式中,运算符写中间,2个计算的数写在运算符的两边,称为中缀式。波兰数学家发现,算式中的运算符可以写在2个计算的数的后面,称为后缀式。
本题计算只有一个运算符的后缀式的值。
正确的运算符只有+, -, *, / 四种,即只做四则运算。数是整数,结果也是整数,其值都不超过int类型的范围。
如果出现除数为0的情况则输出"Divided by zero!“。
输入的运算符,如果不是+, -, *, / 四种之一,则输出"Invalid operator!”。这种情况只会是一个可见字符。
输入:
有若干组,每组包括2个整数和一个运算符(可能错为一个可见字符)。但是,只保证输入顺序,不保证输入格式,也就是说每组可以输入在多行。
输出:
对于每组输入,或输出计算结果,或输出错误信息。每组输入各输出一行。
输入样例:
3 4 +
5 6
*
8 7 /
20 0 /
3 4
a
输出样例:
7
30
1
Divided by zero!
Invalid operator!
问题分析:
对于不同的运算符进行相应的运算即可,用嵌入式条件语句来实现。
用C语言编程,输入处理需要小心一些,使用格式"%c"往往容易出问题,用格式"%s"可以对付不同的输入格式。而用C++语言编程,处理输入格式要简单一些。
解题C语言程序如下:
/* M0007 四则运算 */
#include
int main()
{
int a, b;
char op, s[2];
while (~scanf("%d%d%s",&a ,&b, s)) {
op = s[0];
if (op == '+') printf("%d\n", a + b);
else if (op == '-') printf("%d\n", a - b);
else if (op == '*') printf("%d\n", a * b);
else if (op == '/') {
if (b == 0) printf("Divided by zero!\n");
else printf("%d\n", a / b);
} else
printf ("Invalid operator!\n");
}
return 0;
}
解题C++语言程序如下:
/* M0007 四则运算 */
#include
using namespace std;
int main()
{
int a, b;
string s;
while (cin >> a >> b >> s) {
if (s[0] == '+') cout << a + b << endl;
else if (s[0] == '-') cout << a - b << endl;
else if (s[0] == '*') cout << a * b << endl;
else if (s[0] == '/') {
if (b == 0) cout << "Divided by zero!" << endl;
else cout << a / b << endl;
} else
cout << "Invalid operator!" << endl;
}
return 0;
}