栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

1331后缀表达式的值

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1331后缀表达式的值

题目

原题链接http://ybt.ssoier.cn:8088/problem_show.php?pid=1331 

审题 

这道题其实就是一个简单的数学运算,只不过是用后缀表达式,直接看一下下面的解题思路吧。

思路

注意到数据范围,我们开一个long long的栈,别忘了加头文件stack。

stackstk;

 接着我们用getline来输入带空格的表达式str。代码如下:

string str;
getline(cin,str);
long long cnt=0;
long long a,b;

然后进行循环判断。(具体详解如下代码中的注释)。

for(int i=0;i='0'&&str[i]<='9'){//判断当前字符是否为数字
        cnt=(str[i]-48)+cnt*10;//按数位计算数字
    }
    if(str[i]==' '){//如果当前字符是空格,就说明数字读取完毕
        stk.push(cnt);就将计算好的cnt入栈
        cnt=0;//再将cnt归零
    }
    if(str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/'){//如果当前字符时运算符号
        b=stk.top();//将栈顶赋值给b
        stk.pop();//删除栈顶
        a=stk.top();//将新栈顶赋值给a
        stk.pop();//删除栈顶
        //判断符号进行运算
        if(str[i]=='+'){
            stk.push(a+b);
        }else if(str[i]=='-'){
            stk.push(a-b);
        }else if(str[i]=='*'){
            stk.push(a*b);
        }else if(str[i]=='/'){
            stk.push(a/b);
        }
    }
    if(str[i]=='@'){//如果当前字符为@,直接终端循环
        break;
    }
}

最后将栈里剩下唯一的一个数——也就是运算结果——也就是栈顶输出。代码如下:

cout< 
完整代码 
#include
#include
#include
using namespace std; 
stackstk;
int main(){
    string str;
    getline(cin,str);
    long long cnt=0;
    long long a,b;
    for(int i=0;i='0'&&str[i]<='9'){
            cnt=(str[i]-48)+cnt*10;
        }
        if(str[i]==' '){
            stk.push(cnt);
            cnt=0;
        }
        if(str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/'){
            b=stk.top();
            stk.pop();
            a=stk.top();
            stk.pop();
            if(str[i]=='+'){
                stk.push(a+b);
            }else if(str[i]=='-'){
                stk.push(a-b);
            }else if(str[i]=='*'){
                stk.push(a*b);
            }else if(str[i]=='/'){
                stk.push(a/b);
            }
        }
        if(str[i]=='@'){
            break;
        }
	}
    cout< 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018374.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号