top1编程
← 返回题目
题解

自定义的计算器

1 条题解

  • 0
    @ 2026-8-5 21:17:14

    P4291 自定义的计算器(【入门】)

    解题思路

    这个计算器要支持五种运算:加 +、减 -、乘 *、整除 /、取余 %。输入是一个数字、一个运算符、一个数字,中间用空格分开,比如 5 % 2。

    我们先把第一个数存进变量 x,运算符存进字符 op,第二个数存进变量 y,再用 if...else if 一条一条判断 op 是哪一个:

    • 是 + 就输出 x+yx+y;
    • 是 - 就输出 x−yx-y;
    • 是 * 就输出 x×yx\times y;
    • 是 / 就输出 x÷yx\div y(整除,只留整数部分);
    • 剩下的一定是 %,输出 xx 除以 yy 的余数。

    拿样例 5 % 2 来说,55 除以 22 商 22 余 11,所以输出 1。

    需要注意:输入顺序是"数字 运算符 数字",所以要用 cin >> x >> op >> y,顺序不能弄反。整除 / 和取余 % 都要求除数不为 0,题目保证 x、y≥1x、y≥1,所以不用特殊处理除数为 0 的情况。

    参考代码

    // 简易计算器:支持 + - * / % 五种运算
    #include <iostream>
    using namespace std;
    
    int main() {
        int x, y;
        char op;
        cin >> x >> op >> y;   // 输入顺序:数字 运算符 数字
        if (op == '+') cout << x + y << endl;
        else if (op == '-') cout << x - y << endl;
        else if (op == '*') cout << x * y << endl;
        else if (op == '/') cout << x / y << endl;
        else cout << x % y << endl;   // 剩下就是取余运算
        return 0;
    }
    

    复杂度分析

    最多只会做一次运算、判断 5 次就结束,和数字大小无关,所以时间复杂度是 O(1)O(1)。只用了三个变量,额外空间复杂度也是 O(1)O(1)。

    • 1