蓝桥杯基础练习题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("\n %d \n",ha); return ha; }
输入带括号基本运算表达式,得出答案。