蓝桥杯基础练习题9(表达式)

#include "stdio.h"
int chuli(int i);
int main(void)
{
    int a=0,i=0,x=0,u=0,s[100],zi,b=0;
    char c,f[100];
    for(i=0; ;i++)
    {
        for(x=0;(c=getchar())>='0'&&c<='9';x++)
        {
            u=c-'0';
            if(x==0)
            zi=u;
            else  zi=zi*10+u;
        }
        s[a]=zi;
        if(c!='['&&c!=']')
        f[a++]=c;

        if (c=='[')   
        s[0]=chuli(i);
        if(c=='=')
        break;
    }
    
    for(a=0;a<=i;a++)
    {
        x=a+1;
        if((f[a]=='*'||f[a]=='/')&&b==0){  u=a;b=1; }
        if(f[a]=='+'||f[a]=='-')  b=0;
        if(f[a]=='*')  {  s[u]=s[u]*s[x];  f[a]='+'; s[x]=0; }
        if(f[a]=='/')  {  s[u]=s[u]/s[x];  f[a]='+'; s[x]=0; }
    }
    for(a=0;a<=i;a++)
    {
        x=a+1;
        if(f[a]=='+') {  s[0]=s[0]+s[x]; }
        if(f[a]=='-') {  s[0]=s[0]-s[x]; }
    }
    printf("%d",s[0]);
    return 0;
}

int chuli(int i)
{
    int shu[100],d=0,f=0,g=0,ha,l=0,q=0;
    char w,fu[100];
    for(d=0; ;d++)
    {
        for(f=0;(w=getchar())>='0'&&w<='9';f++)
        {
            g=w-'0';
            if(f==0)  ha=g;
            else ha=ha*10+g;
        }
        shu[l]=ha;
        if(w!='['&&w!=']')  fu[l++]=w;
        if(w==']')  break;
    }
    for(l=0;l<=d;l++)
    {
        g=l+1;
        if((fu[l]=='*'||fu[l]=='/')&&q==0)  {  f=l; q=1; }
        if(fu[l]=='+'||fu[l]=='-')  q=0;
        if(fu[l]=='*')  {  shu[f]=shu[f]*shu[g]; fu[l]='+'; shu[g]=0; }
        if(fu[l]=='/')  {  shu[f]=shu[f]/shu[g]; fu[l]='+'; shu[g]=0; }
    }
    ha=shu[0];
    for(l=0;l<=d;l++)
    {
        g=l++;
        if(fu[l]=='+')    ha=ha+shu[g];
        if(fu[l]=='-')    ha=ha-shu[g];
    }
    ha=99;
    printf("
 %d  
",ha);
    return ha;
}

输入带括号基本运算表达式,得出答案。

原文地址:https://www.cnblogs.com/jzl123/p/6408741.html