Skip to content

Latest commit

 

History

History
105 lines (91 loc) · 2.49 KB

2930.md

File metadata and controls

105 lines (91 loc) · 2.49 KB

数学运算 2930: 加减乘除

题目要求进行简单的表达式求值,运算符包括加减乘除取余和阶乘。

题目来源

2930: 加减乘除

总时间限制: 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。