1 条题解

  • 0
    @ 2026-10-26 13:00:02

    思路与算法

    用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

    信息

    ID
    1728
    时间
    1000ms
    内存
    64MiB
    难度
    入门
    标签
    递交数
    1
    已通过
    1
    上传者