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

老题新解|简单算术表达式求值

《信息学奥赛一本通》第129题:简单算术表达式求值

两位正整数的简单算术运算(只考虑整数运算),算术运算为:
+,加法运算;
-,减法运算;
*,乘法运算;
/,整除运算;
%,取余运算。
算术表达式的格式为(运算符前后可能有空格):
运算数运算符运算数。
请输出相应的结果。
输入格式
一行算术表达式。
输出格式
整型算数运算的结果(结果值不一定为 222 位数,可能多于 222 位或少于 222 位)。
输入输出样例 #1
输入 #1
32+64
输出 #1
96

大家好,我是莫小特。
这篇文章给大家带来《信息学奥赛一本通》中的第 129 题:简单算术表达式求值。

image.png

一、题目描述

洛谷的题号是:B2130 简单算术表达式求值

image.png

二、题意分析

这道题是信息学奥赛一本通练习题的第 129 题。

根据输入格式的描述,输入一行算术表达式,格式为:运算数、运算符、运算数,因为只考虑整数运算,所以运算数为 int 类型,运算符为 char 类型。

int x,y;//运算数
char ch;//运算符
cin>>x>>ch>>y;

输入完成后,根据题目表示,可以写一个函数来完成,返回值为 int 类型,函数名为 js,参数有三个,一个是整数 x,一个是字符 ch,一个是整数 y。

int js(int x,char ch,int y)
{}

根据 ch 的加减乘除求余数类型来完成。

if(ch=='+') return x+y;//加法 返回加法值
if(ch=='-') return x-y;//减法 返回减法值
if(ch=='*') return x*y;//乘法 返回乘法值
if(ch=='/') return x/y;//除法 返回除法值
if(ch=='%') return x%y;//模除 返回余数

函数整体为:

int js(int x,char ch,int y)
{if(ch=='+') return x+y;//加法 返回加法值if(ch=='-') return x-y;//减法 返回减法值if(ch=='*') return x*y;//乘法 返回乘法值if(ch=='/') return x/y;//除法 返回除法值if(ch=='%') return x%y;//模除 返回余数
}

最后在主函数中使用函数来完成。

cout<<js(x,ch,y);

按照样例输入对数据进行验证。

image.png

符合样例输出,到网站提交测评。

image.png

测试通过!

三、完整代码

该题的完整代码如下:

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int js(int x,char ch,int y)
{if(ch=='+') return x+y;//加法 返回加法值if(ch=='-') return x-y;//减法 返回减法值if(ch=='*') return x*y;//乘法 返回乘法值if(ch=='/') return x/y;//除法 返回除法值if(ch=='%') return x%y;//模除 返回余数
}
int main()
{int x,y;//运算数char ch;//运算符cin>>x>>ch>>y;cout<<js(x,ch,y);return 0;
}

四、总结

本题考察了算术表达式的解析与运算,主要涵盖以下知识点:

(1)使用 cin>>x>>ch>>y 输入运算数与运算符,自动处理空格。

(2)运算符使用 char 类型存储,根据其值选择对应运算。

(3)通过自定义函数 js(int x,char ch,int y) 实现加、减、乘、除、取余的运算。

(4)利用 if 判断分支实现运算符的选择。

(5)输出最终运算结果,支持不同位数的整数。

常见易错点:

(1)未考虑运算符前后可能存在空格,导致输入异常。

(2)整除运算 / 在 C++ 中为整数除法,不能得到小数结果。

(3)取余运算 % 仅能用于整数,若误用浮点数会报错。
(4)函数缺少 return 语句或遗漏某个运算符的处理。

---end---

如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、关注我哦!
如果有更好的方法也可以在评论区评论哦,我都会看哒~

我们下集见~

http://www.dtcms.com/a/394884.html

相关文章:

  • RustFS与其他新兴存储系统(如SeaweedFS)相比有哪些优势和劣势?
  • WPS标点符号换行问题解决
  • 开发团队的文档自动化革命:WPS+cpolar实战录
  • 【Linux】文本编辑器Vim
  • flink1.18下游配置多个sink
  • 如何删除 MySQL 数据库中的所有数据表 ?
  • win10加域后,控制面板中的,internet 时间就没有了
  • Unity移动平台笔记
  • 【图像算法 - 27】基于YOLOv12与OpenCV的无人机智能检测系统
  • html css js网页制作成品——圣罗兰护肤html+css+js 4页附源码
  • 21届-3年-Java面经-华为od
  • 计算机视觉(opencv)实战三十一——CascadeClassifier 详解与实战人脸检测
  • 计算机视觉:基于YOLOv11 实例分割与OpenCV 在 Java 中的实现图像实例分割
  • 【实战】Spring Boot 3.x整合Redis:注解式缓存与分布式锁最佳实践
  • 密钥耳语-一个轻量、易备份、支持命令行与图形界面的口令派生加密工具 具有 CLI 和 GUI 的轻量级密码衍生加密工具
  • AI重塑流量背后,微软广告打造下一代广告生态
  • 低代码数字化时代的开发新范式
  • 微信小程序“无损去水印精灵”技术解析大纲
  • 少儿舞蹈小程序(18)订单确认
  • Uniapp X 打包抖音小程序教程
  • uni-app中实现在input的placeholder中添加图标
  • vue面试题集锦
  • 基于Springboot+UniApp+Ai实现模拟面试小工具十二:模拟面试功能实现
  • 基于Springboot+UniApp+Ai实现模拟面试小工具十一:主页功能及简历上传功能实现
  • BGP选路“十一步”法则
  • MITRE ATLAS 对抗威胁矩阵与 LLM 安全
  • 第5章:技术深度与广度:构筑你的核心壁垒(1)
  • 洞察未来:Temporal.io 如何赋能复杂模拟引擎的韧性与智能
  • Android 实例 - Android 圆形蒙版(Android 圆形蒙版实现、圆形蒙版解读)
  • PyCharm 在 Linux 上的安装指南