在线网站seo优化上海网站seo排名
在线网站seo优化,上海网站seo排名,做软件代理去哪个网站,123邢台招聘信息网核心考点#xff1a;1.栈的应用 2.字符串处理
题目描述
所谓后缀表达式是指这样的一个表达式#xff1a;式中不再引用括号#xff0c;运算符号放在两个运算对象之后#xff0c;所有计算按运算符号出现的顺序#xff0c;严格地由左而右新进行#xff08;不用考虑运算符的…核心考点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, ); // 读取输入的后缀表达式遇到 时结束输入stackint 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;
streamerc;
steamerval;
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.mzph.cn/bicheng/86380.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!