玩命加载中 . . .

计算表达式


http://t.cn/AiKKJjJ5

描述

对于一个不存在括号的表达式进行计算

输入描述:

存在多组数据,每组数据一行,表达式不存在空格

输出描述:

输出结果

示例1

输入:

6/2+3+3*4

输出:

18
#define _CRT_SECURE_NO_WARNINGS 1
#include <bits/stdc++.h>
using namespace std;

int main()
{
    double t, term;//测试数据默认先输入数字。如果存在先输入符号的情况,可以用if语句,比如-5
    char c;//紧接着数字输入运算符号

    double a[1000];//保存结果的栈
    double sum;//保存最终结果

    int i;//i表示栈的高度,从0开始计算
    int j;
    while (scanf("%lf", &t) != EOF)
    {
        sum = 0;
        i = 0;
        a[0] = t;//输入的第一个数字压栈
        while (scanf("%c", &c) != EOF && c != '\n')
        {
            scanf("%lf", &term);//输入运算符之后紧接着输入另一个运算数
            //计算逻辑:加法直接压栈,减法压栈相反数,乘法取出一个数相乘后压栈,除法取出一个数相除后压栈
            //最关键的就是这个加法的处理,两个操作数都要压栈
            if (c == '+')
                a[++i] = term;
            else if (c == '-')
                a[++i] = 0 - term;
            else if (c == '*')
                a[i] *= term;
            else if (c == '/')
                a[i] /= term;
        }

        for (j = 0; j <= i; j++)
            sum += a[j];
        printf("%d\n", (int)sum);

    }
    return 0;
}

文章作者: Jack Tim
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Jack Tim !
评论
  目录