- 题目描述:
实现一个正整数加、减、乘、除四则混合运算求值方法
条件限定:
1、 输入的四则运算式由'+','-','*','/'运算符及正整数组成;
2、 无需考虑特殊字符,及除不尽的情况;
3、 无需考虑运算符的优先级,加减乘除优先级一样,仅按照自左至右的顺序依次计算;
4、 当遇到除数为0时,即刻返回当前已计算结果。
- 要求实现函数:
void CalCarithmeticRlt(const char *pInputStr, int *lOutputRlt);
【输入】 pInputStr: 输入字符串
【输出】 lOutputRlt: 输出计算结果
【注意】不用考虑输入四则运算式非法情况
- 示例
输入:“2+1*4-2/5”
输出:“2”
#include "stdafx.h" #include <iostream> using namespace std; int calculate(int a,int b,char c) { switch(c) { case '+': return a+b; case '-': return a-b; case '*': return a*b; case '/': return a/b; } } int _tmain(int argc, _TCHAR* argv[]) { char str[]="289+100*7-2/8"; int number[5]={0}; char sign[5]; int i=0,j=0; int temp=0; int count=0; while(j<strlen(str)) { temp=0; while(('0'<=str[i])&&(str[i]<='9')&&i<strlen(str)) { temp=10*temp+str[i]-'0'; ++i; } sign[count]=str[i]; number[count++]=temp; j=i; i++; } cout<<number[0]<<" "<<number[1]<<" "<<number[2]<<" "<<number[3]<<" "<<number[4]<<endl; cout<<sign[0]<<" "<<sign[1]<<" "<<sign[2]<<" "<<sign[3]<<" "<<sign[4]<<endl; int result=0; temp=number[0]; for(int i=0;i<5;i++) { temp=calculate(temp,number[i+1],sign[i]); if(4==i) break; cout<<temp<<endl; } // cout<<temp; return 0; }