表达式求值(无括号、无空格、每个数0-9、有运算符优先级)
来源:互联网 发布:淘宝入驻 编辑:程序博客网 时间:2024/05/21 06:56
/*表达式求值(无括号、无空格、每个数0-9、有运算符优先级) 简单四则运算问题描述:输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值注1、表达式只含 +, -, *, / 四则运算符,不含括号2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况3、要考虑加减乘除按通常四则运算规定的计算优先级4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无0作为除数情况发生5、输入字符串一定是符合题意合法的表达式,其中只包括数字字符和四则运算符字符,除此之外不含其它任何字符,不会出现计算溢出情况要求实现函数:int calculate(int len,char *expStr)【输入】 int len: 字符串长度;char *expStr: 表达式字符串;【输出】 无【返回】 计算结果示例1) 输入:char *expStr = “1+4*5-8/3”函数返回:192) 输入:char *expStr = “8/3*3”函数返回:6*/#include<bits/stdc++.h>using namespace std;const int N=100000000;int num[N];int main(){ string a; while(cin>>a) { memset(num,0,sizeof(num)); int cnt=0; num[0]=a[0]-'0'; for(int i=1; i<a.size(); i++) { if(a[i]=='+') { num[++cnt]=a[++i]-'0'; } else if(a[i]=='-') { num[++cnt]=0-(a[++i]-'0'); } else if(a[i]=='*') { num[cnt]*=a[++i]-'0'; } else if(a[i]=='/') { num[cnt]/=a[++i]-'0'; } } int sum=0; for(int i=0; i<=cnt; i++) sum+=num[i]; cout<<sum<<endl; } return 0;}
阅读全文
0 0
- 表达式求值(无括号、无空格、每个数0-9、有运算符优先级)
- 无优先级运算问题
- 无优先级运算问题
- 无括号表达式
- 有符号/无符号数混合运算
- 有符号和无符号数运算
- stl表达式求值(支持括号空格版)
- 无优先级运算 回溯 Java
- 10700 无括号的表达式
- 【讨论】有符号数和无符号数运算效率
- 有符号数与无符号数之间运算问题
- 有符号数与无符号数运算
- 有符号数与无符号数运算问题
- 有符号数与无符号数之间运算问题
- 有符号数与无符号数之间运算问题
- 有符号数与无符号数之间运算问题
- 有符号数和无符号数的运算
- 有符号数与无符号数之间运算问题
- @Scheduled注解 定时任务 cron表达式
- elastitcsearch 导入样品数据
- Oracle sql执行顺序
- Eclipse控制台中的中文输出乱码问题
- Coderforces cAPS lOCK
- 表达式求值(无括号、无空格、每个数0-9、有运算符优先级)
- Choosing a good chart
- Spring cloud config 配置文件加密
- 小写字母排在大写字母之前
- javax.mail发送邮件
- Python通过pypyodbc访问Access数据库
- 二叉树的下一个结点
- 关于list的四种遍历方式
- 分针网—每日分享:JavaScript Array 原型方法 大盘点