1 条题解
-
0
思路与算法
用int、char、int依次读两个运算数和中间运算符,格式化输入自动跳过运算符两旁的空格。根据+、-、*、/、%分支计算,输出一次整数结果。这里没有多个运算符,不需要栈或优先级。
正确性说明
输入协议保证唯一二元运算,读取的a、op、b与其三个组成部分对应。每个分支恰好实现该符号的整数定义。两运算数均是两位正整数,除数不为0,整除与取余有定义。五种合法符号被完全覆盖,所以输出就是表达式的值。
复杂度
两个两位整数及一个符号,时间和空间均为O(1),变量初始化也是O(1)。乘积最大99×99=9801,减法可为负,int足够。
易错点
/执行整数除法而非实数除法;%是余数,不能交换a与b。结果不一定为两位数,不能补前导0。读取运算符时使用cin>>op即可兼容有无空格。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { int a, b; char op; cin >> a >> op >> b; int ans = 0; if (op == '+') ans = a + b; else if (op == '-') ans = a - b; else if (op == '*') ans = a * b; else if (op == '/') ans = a / b; else ans = a % b; cout << ans << '\n'; }
- 1