计算表达式的值并输出,表达式由若干个数字和运算符(只包含加号和减号)构成
Posted 龟龟大宝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算表达式的值并输出,表达式由若干个数字和运算符(只包含加号和减号)构成相关的知识,希望对你有一定的参考价值。
注:表达式中数字均为正数
思路:遍历字符串参数,逐个拷贝字符直到遇见运算符,记录运算符和拷贝好的字符串;字符串结束只拷贝字符。
C版代码如下:
#include<stdio.h> #include<string.h> #include<stdlib.h> int analysis(char *expression) { int i=0,j=0,n=0,m=0,num=0,sum=0; int param_len=strlen(expression); char *p=expression; char strnum[1024]; char oper[1024]; int splnum[1024]; memset(strnum, 0x00, 1024); memset(oper, 0x00, 1024); for(i=0; i<param_len; i++) { if(p[i] != \'\\0\') { if(i == param_len - 1) { strnum[n] = p[i]; num = atoi(strnum); splnum[m] = num; m++; break; } if(p[i] == \'-\' || p[i] == \'+\') { n = 0; num = atoi(strnum); splnum[m] = num; oper[m] = p[i]; m++; memset(strnum, 0x00, strlen(strnum)*sizeof(char)); } else { strnum[n] = p[i]; n++; } } else { break; } } sum=splnum[0]; for(j=0; j<m; j++) { switch(oper[j]) { case \'+\': sum += splnum[j+1]; break; case \'-\': sum -= splnum[j+1]; break; default: break; } } return sum; } int main(){ int a=analysis("100+200-1"); printf("%d\\n", a); }
运行结果:
python版代码如下:
class Solution: def analysis(self,expresion): i = 0 data = \'\' opt = [] arr = [] while i < len(expresion): if i == len(expresion)-1: data += expresion[i] arr.append(int(data)) break if expresion[i].isdigit(): data=data+expresion[i] elif expresion[i] == "+" or expresion[i] == "-": opt.append(expresion[i]) arr.append(int(data)) data = \'\' else: break i += 1 sum = arr[0] i = 0 for str in opt: if opt[i] == "+": sum += arr[i+1] elif opt[i] == "-": sum -= arr[i+1] else: break i += 1 return sum if __name__ == \'__main__\': test=Solution() sum=test.analysis(\'100+200-1\') print sum
以上是关于计算表达式的值并输出,表达式由若干个数字和运算符(只包含加号和减号)构成的主要内容,如果未能解决你的问题,请参考以下文章