简单算术表达式求值

GitHub跳转原题关系图返回列表

去除空格后识别唯一运算符,按对应整数运算规则计算结果。

OJ: noi_openjudge

题目 ID: ch0112-01

难度:入门

标签:模拟字符串python

日期: 2026-07-30 23:01

题意

计算两个整数和一个运算符组成的简单表达式,运算符两侧可能有空格。

思路

先删除空格,再在五种运算符中找到出现的一个,用 split 分出左右操作数。根据运算符分支计算;// 对正整数正好是题目要求的整除。

代码

Python代码

python
expression = input().replace(" ", "")

for operator in "+-*/%":
    if operator in expression:
        left, right = map(int, expression.split(operator))
        break

if operator == "+":
    print(left + right)
elif operator == "-":
    print(left - right)
elif operator == "*":
    print(left * right)
elif operator == "/":
    print(left // right)
else:
    print(left % right)

C++代码

cpp
#include <cstdio>

int a,b;
char c;

void init(){
    scanf("%d",&a);

    while(1){
        scanf("%c",&c);
        if( c != ' ')
            break;
    }

    scanf("%d",&b);
}

int suan(int a,int b,char c){
    if( c == '/')
        return a /b;
    if( c == '%')
        return a % b;
    if( c == '*')
        return a * b;
    if( c == '+')
        return a + b;
    if( c == '-')
        return a - b;
}

int main(){
    init();
    int ans = suan(a,b,c);
    printf("%d\n",ans);

    return 0;
}

复杂度

时间和空间复杂度均为 O(1)O(1)

总结

输入格式固定且只有一个运算符时,直接解析比通用表达式求值更清楚。