每天一道算法题(28)——计算正整数的加、减运算式
来源:互联网 发布:seo内部优化 编辑:程序博客网 时间:2024/06/05 13:21
题目:
通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。
补充说明:
1. 操作数为正整数,不需要考虑计算结果溢出的情况。
2. 若输入算式格式错误,输出结果为“0”。
代码:
bool getNum(const char*& p,int& result){//获得操作数,并返回下一个结果if(!p||*p<'0'||*p>'9'){return false;}else{result=0;while(*p>='0'&&*p<='9'){result=*p-'0'+10*result;p++;}}return true;}void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr){if(!pInputStr||!lInputLen){*pOutputStr='0';*(pOutputStr+1)='\0'; return;}int left=0,right=0;//左右操作数bool flag=true;//标记操作符bool op=false;//操作符已经获取if(!getNum(pInputStr,left)){//左操作数初始化不成功 *pOutputStr='0'; return;}while(*pInputStr!='\0'){if(op&&*pInputStr==' '&&*(pInputStr+1)>='0'&&*(pInputStr+2)<='9'){//当前仅当操作符获取成功且满足条件时pInputStr++;getNum(pInputStr,right);if(flag)left=left+right;elseleft=left-right;op=false;//操作符已经使用,此时未获取。}else if(!op&&*pInputStr==' '&&*(pInputStr+1)=='+'){//当且仅当操作符获取不成功且满足格式,则获取操作符flag=true;op=true;pInputStr+=2;}else if(!op&&*pInputStr==' '&&*(pInputStr+1)=='-'){//当且仅当操作符获取不成功且满足格式,则获取操作符flag=false;op=true;pInputStr+=2;}else{//其它情况 *pOutputStr='0';*(pOutputStr+1)='\0'; return;}} itoa(left,pOutputStr,10);}
及其鲁棒。严格遵循格式。对于一切不遵循格式的所有输入字符串,设定输出为0。
0 0
- 每天一道算法题(28)——计算正整数的加、减运算式
- 每天一道算法题——每天一道算法题
- 每天一道算法题(22)——扑克牌的顺子
- 每天一道算法题——树的子结构
- 每天一道算法题——汉诺塔
- 每天一道算法题——
- 【每天一道算法题】
- 【每天一道算法题】
- 【每天一道算法题】
- 华为机试——通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串
- 【每天一道算法题】GOOGLE的服务器
- 每天一道算法题(21)——字符串的全排列和组合算法
- java将一个正整数分解质因数(每天一道算法题)
- 算法-正整数的加减运算式
- 每天一道算法题(16)——翻转链表
- 每天一道算法题(23)——约瑟夫环问题
- 每天一道算法题(31)——正数减法
- 每天一道算法题(34)——背包问题
- ubuntu14.04+cuda7.0环境变量配置
- 对于数组知识的补救示例与分享
- unp.h及网络编程UNP所有代码的下载
- TP-Coupon安装完成后提示系统发生错误的解决办法
- java基础学习总结——流
- 每天一道算法题(28)——计算正整数的加、减运算式
- leetcode Course Schedule II
- ArcSDE10.2 for Oracle 11g 安装和创建企业数据库
- OpenGL 矩阵变换(讲的太好了~!)
- CentOS 6.x 下安装配置 gvim
- 波纹动画的研究
- 模积和
- 南邮 OJ 1109 搜索(二)
- Windows下使用Composer安装yii2遇到的问题及解决方法