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

虹口武汉阳网站建设网络销售平台排名

虹口武汉阳网站建设,网络销售平台排名,做网站找云无限,常州哪家公司做网站核心考点:1.栈的应用 2.字符串处理 题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的…

核心考点:1.栈的应用 2.字符串处理

题目描述

所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。

本题中运算符仅包含 +-*/+-*/。保证对于 // 运算除数不为 0。特别地,其中 // 运算的结果需要向 0 取整(即与 C++ / 运算的规则一致)。

如:3*(5-2)+73*(5-2)+7 对应的后缀表达式为:3.5.2.-*7.+@3.5.2.-*7.+@。在该式中,@ 为表达式的结束符号。. 为操作数的结束符号。

输入格式

输入一行一个字符串 ss,表示后缀表达式。

输出格式

输出一个整数,表示表达式的值。

输入输出样例

输入 #1

3.5.2.-*7.+@

输出 #1

16

输入 #2

10.28.30./*7.-@

输出 #2

-7

详细解答:

#include <iostream>
#include <stack>
#include <sstream>
using namespace std;int main()
{stringstream streamer;  // 用于存储当前读取的数字string str;  // 存储输入的后缀表达式getline(cin, str, '@');  // 读取输入的后缀表达式,遇到 '@' 时结束输入stack<int> sta;  // 用栈来存储操作数// 遍历后缀表达式中的每个字符for (auto &c : str){if (c == '.')  // 处理操作数结束符 '.'{int val;streamer >> val;  // 读取当前数字sta.push(val);  // 将操作数压入栈streamer.clear();  // 清空字符串流,为下一次读取做准备}else if (isdigit(c))  // 如果是数字字符,加入到字符串流中streamer << c;else  // 如果是运算符{int a, b;a = sta.top();  // 弹出栈顶的第一个操作数sta.pop();b = sta.top();  // 弹出栈顶的第二个操作数sta.pop();// 根据不同的运算符进行相应的运算switch (c){case '+':  // 加法sta.push(a + b);break;case '-':  // 减法sta.push(b - a);break;case '*':  // 乘法sta.push(a * b);break;case '/':  // 除法sta.push(b / a);  // 向0取整的除法(C++中的整数除法)break;}}}printf("%d", sta.top());  // 输出栈顶的值,即表达式的计算结果return 0;
}

核心知识积累:

1.通过stringstreamer字符串流将字符型和整型进行转换

stringstreamer streamer;
streamer<<c;
steamer>>val;

2.循环语句的写法:for(auto &c:str)

这句话的意思是:定义一个变量c,从str中逐一取元素,c的类型根据str决定,所以前面是auto

3.getline()函数

getline(cin,str,'@');若有三个参数,意思是遇见@停止输入; 

getline(cin,str);若只有两个参数,则意思是遇见回车停止输入。 

题目解析

1. 思路分析

本题是关于后缀表达式的求值问题。后缀表达式的特点是:没有括号,运算符出现在操作数之后。解决此类问题的常见方法是使用栈来存储操作数。对于每个符号的处理可以分为以下几步:

  • 遇到数字:将数字压入栈中。
  • 遇到运算符:弹出栈顶的两个操作数,进行相应的运算,然后将运算结果重新压入栈中。
  • 最后,栈顶的值即为整个表达式的结果。
2. 栈的使用

栈是本题的核心数据结构。后缀表达式中,运算符总是出现在两个操作数之后,意味着在运算符出现时,操作数已经在栈中准备好。因此,栈可以方便地管理这些操作数并执行运算。

  • 当遇到数字时,我们将其压入栈。
  • 当遇到运算符时,我们从栈中弹出两个操作数,执行运算,然后将结果再压入栈中。
3. 运算符处理

在本题中,支持的运算符有+-*/,其中 / 运算符要求向0取整,这与大多数编程语言的向下取整规则不同。C++中的整型除法会自动执行向0取整(即除法结果的小数部分被截断)。

4. 输入输出格式
  • 输入:一个字符串表示后缀表达式,表达式中的数字和运算符通过.@符号进行分隔,@表示表达式的结束。
  • 输出:一个整数,表示后缀表达式的计算结果。

5.易错点:push中b-a还是a-b要注意,以及除法

题目来源:P1449 后缀表达式 - 洛谷

http://www.dtcms.com/wzjs/17892.html

相关文章:

  • 秦皇岛市做网站优化百度营销官网
  • 秦皇岛市是几线城市优化品牌seo关键词
  • 网站规划建设前期规划方案百度客服在哪里找
  • 婚恋网站设计百度入口官网
  • 请简述网站制作流程网站seo教材
  • 企业信息管理系统er图广州中小企业seo推广运营
  • 淘宝做任务赚钱网站有哪些web成品网站源码免费
  • 怎么做视频解析的网站seo推广怎么收费
  • 广西住房城乡和建设厅网站首页图片搜索引擎
  • 做视频有赚钱的网站有哪些小时seo百度关键词点击器
  • 做网站和自媒体哪个好百度电脑版官网入口
  • 黑龙江省建设教育网站查询百度搜索引擎平台
  • 阿里云php网站建设教程如何注册网站平台
  • 高度重视政府网站建设管理工作直播:英格兰vs法国
  • 网站建设服务那一个便宜百青藤广告联盟
  • 玉田做网站公司排名seo
  • 广东手机网站建设价格低免费的十大免费货源网站
  • 深圳建网站技术海外互联网推广平台
  • 网站在线咨询系统成都网站推广
  • 重庆公司公章查询长春百度关键词优化
  • 企业网站制作公司盈利百度官方网
  • 中国寰球工程有限公司网站设计seo企业优化方案
  • 乐从网站制作百度快速排名用什
  • 个性个人网站模板网站搜索工具
  • 东莞网站优化关键词排名北大青鸟培训机构靠谱吗
  • 如何做网站排名优化专业seo网站
  • 网页版游戏排行榜女惠州搜索引擎优化
  • 用mac做网站谷歌浏览器下载电脑版
  • 建设网站50m数据库怎么免费创建个人网站
  • 汽车之家在线官网优化设计答案五年级上册