第三周——后缀表达式

Posted gsq1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三周——后缀表达式相关的知识,希望对你有一定的参考价值。

题目描述

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

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

输入格式

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

输出格式

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

输入输出样例

输入 
3.5.2.-*7.+@
输出 
16

题目分析:

本题输入的是后缀表达式

后缀表达式的特点是——不用考虑运算符的优先级

遇到运算符就运算

所以,我们很容易就想到了算法——栈

算法分析:

栈特点——先进后出

本题可以使用栈来解决

遇到数字就入栈

遇到符号就出栈、并运算

再把运算后的结果入栈

 

代码:

#include<iostream>
#include<stack>
using namespace std;
int main()

char t;
stack<int> s;
while(cin>>t&&t!=\'@\')//判断是否结束

if(t>=\'0\'&&t<=\'9\')

int temp=t-\'0\';//保存数字
while(cin>>t&&t>=\'0\'&&t<=\'9\')
temp=temp*10+t-\'0\';//保存数字,是否为多位数字
s.push(temp);//放入栈中

if(t==\'+\')//判断加法

int a=s.top();//取出第一位
s.pop();//删除第一位
int b=s.top();//b就变成了第一位
s.pop();删除
s.push(b+a);将结果放入栈中,继续计算

if(t==\'-\')

int a=s.top();
s.pop();
int b=s.top();
s.pop();
s.push(b-a);

if(t==\'/\')

int a=s.top();
s.pop();
int b=s.top();
s.pop();
s.push(b/a);

if(t==\'*\')

int a=s.top();
s.pop();
int b=s.top();
s.pop();
s.push(b*a);


cout<<s.top()<<endl;//输出
return 0;

20170522-20170527第三周

less框架的应用

创建后缀为.less的文件

用@去声明一个变量

例@width:100px;

定义时用:

.box{

width:@width

}

mixin混入:将一个类引用到另一个类

例:.box1{ width:500px};

    .box2{ .box1}

 

带参数的混入 自定义类名(参数){属性:参数},使用时将具体值带入

例:Margin(@canshu)

{margin-top:@canshu}

.box{.Margin(100px)}

 

less中可嵌套编写后编译

.box{

width:400px;

height:400px;

   .box1{

      width:400px;

    height:400px;

       }

    .box2{

  width:400px;

    height:400px;

       }

}

以上是关于第三周——后缀表达式的主要内容,如果未能解决你的问题,请参考以下文章

2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算第三周总结

第三周 正则表达式

Linux运维学习第三周记

20170522-20170527第三周

第三周学习笔录

第三周学习进度