• M0007 四则运算


    问题描述:
    四则运算也称为算术运算,也就是加减乘除。人们写的算式中,运算符写中间,2个计算的数写在运算符的两边,称为中缀式。波兰数学家发现,算式中的运算符可以写在2个计算的数的后面,称为后缀式。

    本题计算只有一个运算符的后缀式的值。

    正确的运算符只有+, -, *, / 四种,即只做四则运算。数是整数,结果也是整数,其值都不超过int类型的范围。
    如果出现除数为0的情况则输出"Divided by zero!“。
    输入的运算符,如果不是+, -, *, / 四种之一,则输出"Invalid operator!”。这种情况只会是一个可见字符。

    输入:
    有若干组,每组包括2个整数和一个运算符(可能错为一个可见字符)。但是,只保证输入顺序,不保证输入格式,也就是说每组可以输入在多行。

    输出:
    对于每组输入,或输出计算结果,或输出错误信息。每组输入各输出一行。

    输入样例:
    3 4 +
    5 6
    *
    8 7 /
    20 0 /
    3 4
    a

    输出样例:
    7
    30
    1
    Divided by zero!
    Invalid operator!

    问题分析:
    对于不同的运算符进行相应的运算即可,用嵌入式条件语句来实现。
    用C语言编程,输入处理需要小心一些,使用格式"%c"往往容易出问题,用格式"%s"可以对付不同的输入格式。而用C++语言编程,处理输入格式要简单一些。

    解题C语言程序如下:

    /* M0007 四则运算 */
    
    #include 
    
    int main()
    {
        int a, b;
        char op, s[2];
    
        while (~scanf("%d%d%s",&a ,&b, s)) {
            op = s[0];
            if (op == '+') printf("%d\n", a + b);
            else if (op == '-') printf("%d\n", a - b);
            else if (op == '*') printf("%d\n", a * b);
            else if (op == '/') {
                if (b == 0) printf("Divided by zero!\n");
                else printf("%d\n", a / b);
            } else
                printf ("Invalid operator!\n");
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    解题C++语言程序如下:

    /* M0007 四则运算 */
    
    #include 
    
    using namespace std;
    
    int main()
    {
        int a, b;
        string s;
    
        while (cin >> a >> b >> s) {
            if (s[0] == '+') cout << a + b << endl;
            else if (s[0] == '-') cout << a - b << endl;
            else if (s[0] == '*') cout << a * b << endl;
            else if (s[0] == '/') {
                if (b == 0) cout << "Divided by zero!" << endl;
                else cout << a / b << endl;
            } else
                cout << "Invalid operator!" << endl;
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    汇凯金业:黄金5g工艺是什么意思
    张益唐的朗道-西格尔零点猜想的论文公布,专家认为该论文尚未完整解决零点猜想
    感知器算法
    谈谈最近招人的感受!
    下一站——Java,准备好踏上新征程了?少年!!!!
    chatgpt赋能python:Python怎么取二进制低三位?
    别再说你不知道分布式事务了
    Java:实现测试一个数是否为素数算法(附完整源码)
    Spring-06 Xml和注解方式配置Aop
    Linux网络编程10——libevent库
  • 原文地址:https://blog.csdn.net/tigerisland45/article/details/126907833