运算优先级

题目链接:https://vjudge.net/problem/ZOJ-3782

给你一个长度为n的式子,让你进行运算,包括加法,减法,除法,乘法,取余。

这个是错误代码:主要是对一连串的*和/以及%不清楚怎么弄。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstring>
#include<cstdio>
using namespace std;
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        getchar();
        while(n--)
        {
            int a,b,c;
            char s1,s2;
            int sum=0;
            cin>>a>>s1>>b>>s2>>c;
            if(s1=='*')
            {
                sum=a*b;
                if(s2=='-')
                    sum-=c;
                else if(s2=='+')
                    sum+=c;
                else if(s2=='%')
                    sum%=c;
                else if(s2=='*')
                    sum*=c;
                else if(s2=='/')
                    sum/=c;
                cout<<sum<<endl;
            }
            else if(s1=='/')
            {
                sum=a/b;
                if(s2=='-')
                    sum-=c;
                else if(s2=='+')
                    sum+=c;
                else if(s2=='%')
                    sum%=c;
                else if(s2=='*')
                    sum*=c;
                else if(s2=='/')
                    sum/=c;
                printf("%d\n",sum);
            }
            else if(s1=='%')
            {
                sum=a%b;
                if(s2=='-')
                    sum-=c;
                else if(s2=='+')
                    sum+=c;
                else if(s2=='%')
                    sum%=c;
                else if(s2=='*')
                    sum*=c;
                else if(s2=='/')
                    sum/=c;
                printf("%d\n",sum);
            }
            else if(s1=='+')
            {
                if(s2=='-')
                    sum=b-c;
                else if(s2=='+')
                    sum=b+c;
                else if(s2=='%')
                    sum=b%c;
                else if(s2=='*')
                    sum=b*c;
                else if(s2=='/')
                    sum=b/c;
                sum+=a;
                printf("%d\n",sum);
            }
            else if(s1=='-')
            {
                if(s2=='-')
                    sum=a-b-c;
                else if(s2=='+')
                    sum=a-b+c;
                else if(s2=='%')
                    sum=a-(b%c);
                else if(s2=='*')
                    sum=a-(b*c);
                else if(s2=='/')
                    sum=a-(b/c);
 
                printf("%d\n",sum);
            }
        }
    }
 
    return 0;
}

猜你喜欢

转载自blog.csdn.net/let_life_stop/article/details/80849408