题目要求进行简单的表达式求值,运算符包括加减乘除取余和阶乘。
总时间限制: 1000ms 内存限制: 65536kB
根据输入的运算符对输入的整数进行简单的整数运算。运算符只会是加+、减-、乘*、除/、求余%、阶乘!六个运算符之一。 输出运算的结果,如果出现除数为零,则输出“error”,如果求余运算的第二个运算数为0,也输出“error”。
运算不会超出整型数据的范围。0!=1; 测试数据有多组。
输入为一行。先输入第一个整数,空格输入运算符,然后再空格输入第二个整数,回车结束本次输入。 如果运算符为阶乘!符号,则不输入第二个整数,直接回车结束本次输入。
输出为一行。输出对输入的两个(或一个)数,根据输入的运算符计算的结果,或者“error”。
12 + 34
54 – 25
3 * 6
45 / 0
5 !
34 % 0
46
29
18
error
120
error
由于题目的输入格式较为规范,因此我们可以直接通过输入来判断操作数的个数和运算的类型。 针对除法和取余的情况要判断第二个操作数是否为0,之后输出结果即可。
#include <iostream>
using namespace std;
int main() {
int a, b, i;
char op;
while (cin >> a >> op) {
long c = 1;
bool er = false;
if (op == '!') {
for (i = 2; i <= a; ++i) {
c *= i;
}
}
else {
cin >> b;
switch (op) {
case '+':
c = a + b;
break;
case '-':
c = a - b;
break;
case '*':
c = a * b;
break;
case '/':
if (b == 0) {
er = true;
}
else {
c = a / b;
}
break;
case '%':
if (b == 0) {
er = true;
}
else {
c = a % b;
}
}
}
if (er) {
cout << "error" << endl;
}
else {
cout << c << endl;
}
}
return 0;
}
2930.cpp 代码长度:653B 内存:128kB 时间:1ms 通过率:92% 最小内存:128kB 最短时间:0ms
首先读入第一个操作数,然后读入一个运算符,通过switch来判断运算,对于阶乘运算不需要读取第二个运算符。 其他读入第二个操作数,对于除法和取余运算要判断是否为零,最后输出结果即可。
有任何的改进意见欢迎大家在微信平台公众号主页面留言或者发表issue。