华为机试 - 计算字符串表达的运算
2014-08-14 22:10
477 查看
通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。
补充说明:
1. 操作数为正整数,不需要考虑计算结果溢出的情况。
2. 若输入算式格式错误,输出结果为“0”。
要求实现函数:
void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);
【输入】 pInputStr: 输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。
补充说明:
1. 操作数为正整数,不需要考虑计算结果溢出的情况。
2. 若输入算式格式错误,输出结果为“0”。
要求实现函数:
void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);
【输入】 pInputStr: 输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
#include <iostream> #include <cstdio> #include <string> #include <cstdlib> using namespace std; void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr) { if(pInputStr==NULL||lInputLen==0) return; int num1=0,num2=0; int i=0; for (;i<lInputLen;i++) { if(pInputStr[i]>='0'&&pInputStr[i]<='9'||pInputStr[i]==' ') { if(pInputStr[i]!=' ') num1=num1*10+pInputStr[i]-'0'; else { i++; break; } } else { pOutputStr[0]='0'; return; } } char op; if(pInputStr[i]=='+'||pInputStr[i]=='-'||pInputStr[i]=='*'||pInputStr[i]=='/') { op=pInputStr[i]; i++; } else { pOutputStr[0]='0'; return; } if(pInputStr[i++]==' ') { for(;i<lInputLen;i++) { if(pInputStr[i]>='0'&&pInputStr[i]<='9') num2=num2*10+pInputStr[i]-'0'; else { pOutputStr[0]='0'; return; } } } else { pOutputStr[0]='0'; return; } int result=0; switch (op) { case '+':result=num1+num2;break; case '-':result=num1-num2;break; case '*':result=num1*num2;break; case '/':result=num1/num2;break; default: break; } itoa(result,pOutputStr,10); } int main() { long inputLen; cin>>inputLen; char *str=new char[inputLen](); char *strOut=new char[inputLen](); cin.get(); gets(str); arithmetic(str,inputLen,strOut); cout<<strOut<<endl; system("pause"); return 0; }
相关文章推荐
- 字符串四则运算表达式的计算(华为机试)
- 字符串四则运算表达式的计算(华为机试)
- 字符串四则运算表达式的计算(华为机试)
- 华为机试之计算字符串运算结果
- 华为机试(仿LISP字符串运算)
- 华为机试:计算两个字符串的最大公共字串的长度,字符不区分大小写
- 2017华为机试(仿LISP字符串运算)
- 华为机试---计算字符串的距离
- 牛客网几道编程题(二)之华为机试在线训练:计算字符个数、字符串最后一个单词的长度、分隔字符串
- 华为机试:计算字符串的距离、24点游戏算法
- 华为机试---计算字符串的相似度
- 华为机试: 计算字符串的相似度、输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数
- 2017华为机试(仿LISP字符串运算)
- 华为机试:计算日期到天数转换、四则运算
- 华为机试——通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串
- 华为机试:给出一个字符串形式表达的二叉树,求出指定节点深度。
- 华为机试(字符串最后一个单词长度,计算字符串的个数,明明的随机数) Java实现
- (华为机试)整数字符串加减运算
- 华为机试简单四则运算
- 华为机试 — 字符串分离