计算表达式的值并输出,表达式由若干个数字和运算符(只包含加号和减号)构成

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

 

以上是关于计算表达式的值并输出,表达式由若干个数字和运算符(只包含加号和减号)构成的主要内容,如果未能解决你的问题,请参考以下文章

简易计算器

1019.简单计算器

简易计算器

简单计算器(非常简便)

hdoj 1237 模拟

C - 简单计算器