当前位置: 首页 > news >正文

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 <stdio.h>

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;
}

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

/* M0007 四则运算 */

#include <iostream>

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;
}

相关文章:

  • 【机器学习】李宏毅——生成式对抗网络GAN
  • osi七层模型
  • 【Vue五分钟】五分钟了解webpack的高级概念
  • 【Linux】云服务器的购买与Linux远程连接
  • c++介绍与入门基础(详细总结)
  • 羊了个羊,日赚500万
  • Vue3+Element-Plus 前端项目配置
  • Qt5开发从入门到精通——第七篇二节( 图形视图——QSlider类)
  • java php nodejs python旅游网站设计与开发需求分析Springboot SpringcloudVue汇总一览
  • 第1章 算法和数据结构
  • Python3中.whl文件介绍
  • 垃圾回收机制
  • Autosar MCAL-ADC详解(一)-基于Tc27x的cfg软件
  • 2022百度之星程序设计大赛 - 复赛 1003 最大值
  • 2022数学建模国赛 A 题 波浪能最大输出功率设计
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【知识碎片】第三方登录弹窗效果
  • 77. Combinations
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • echarts的各种常用效果展示
  • MySQL数据库运维之数据恢复
  • Spring框架之我见(三)——IOC、AOP
  • Vue学习第二天
  • Vue组件定义
  • 彻底搞懂浏览器Event-loop
  • 简单基于spring的redis配置(单机和集群模式)
  • 前嗅ForeSpider采集配置界面介绍
  • 浅谈web中前端模板引擎的使用
  • 探索 JS 中的模块化
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 新书推荐|Windows黑客编程技术详解
  • 栈实现走出迷宫(C++)
  • MyCAT水平分库
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • (30)数组元素和与数字和的绝对差
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (转)ORM
  • (转)创业的注意事项
  • (转)人的集合论——移山之道
  • ./configure、make、make install 命令
  • .dwp和.webpart的区别
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Core中的去虚
  • .Net Web项目创建比较不错的参考文章
  • .NET多线程执行函数