题目1101:计算表达式

题目描述:

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

输入:

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

输出:

输出结果

样例输入:
6/2+3+3*4
样例输出:
18
来源:

2010年上海交通大学计算机研究生机试真题


思路:此题表达式求值不存在括号,题目容易了好多,并不需要引入栈可以解决问题

#include 
using namespace std;

int main()
{
    char ch;
    int temp,i,j,a[200];
    while (scanf("%d",&temp)!=EOF){  //输入第一个操作数,第一个数绝对是整数

        a[0]=0;
        a[1]=temp; //从下标1开始赋值
        i=1;
        while(scanf("%c",&ch)!=EOF && ch!='\n')
        {  //输入运算符,ch!='\n'特别重要,控制输入一串字符串的结束
            scanf("%d",&temp);  //每一个运算符后面,必有一个操作数
            if(ch == '-')  a[++i] = -temp; //先i+1,再把值temp赋给数组a[i+1]
           else if(ch == '+')  a[++i] = temp;
           else if(ch == '*')  a[i]*=temp; //遇到乘号或除号,则i不变,做运算之后,结果依然是a[i]
           else if(ch == '/')  a[i]/=temp;
        }
        for(j=1;j<=i;j++) {
            a[0]+=a[j];  //算出a[0]+a[1]+a[3]+……+a[i]的和,并最后的结果放在a[0]
        }
        printf("%d\n",a[0]);
    }

    return 0;
}


你可能感兴趣的:(九度)