给定一个包含正整数、加(+)、减(-)、乘()、除(/)的算数表达式(括号除外),计算其结果。表达式仅包含非负整数,+, - ,,/ 四种运算符,数字只包含0-9,例如:1+3*5-7/8+9。 整数除法仅保留整数部分。
C语言代码如下:
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
// 按照加减乘除的逻辑先后运算
int calc_logic(char *sInput)
{
int i,j=0,k=0,iLenInput,iLenOptNew;
int iRead1,iRead2,iResult;
char cOpt;
int numNew[1024];
char cOptNew[1024];
memset(numNew,0,sizeof(numNew));
memset(cOptNew,0,sizeof(cOptNew));
iLenInput=strlen(sInput);
iRead1=sInput[0]-48;
numNew[j]=iRead1;
for(i=1;i<iLenInput;i=i+2){
cOpt=sInput[i];
iRead2=sInput[i+1]-48;
switch(cOpt){
case '+':
case '-': cOptNew[k++]=cOpt; numNew[++j]=iRead2; break;
case '*': numNew[j]=numNew[j]*iRead2; break;
case '/': numNew[j]=numNew[j]/iRead2; break;
}
}
iLenOptNew=strlen(cOptNew);
iResult=numNew[0];
for(i=0;i<iLenOptNew;i++){
switch(cOptNew[i]){
case '+': iResult = iResult+numNew[i+1]; break;
case '-': iResult = iResult-numNew[i+1]; break;
}
}
return iResult;
}
int main( int argc,char *argv[]){
char sInput[1024];
int iResult;
memset(sInput,0,sizeof(sInput));
strcpy(sInput,"1+2-3*5*2/3-9/3*5");
printf("The string is:[%s]\n",sInput);
iResult=calc_logic(sInput);
printf("The string result is:[%d]\n",iResult);
return 0;
}