求用以下类似程序编一个可以计算括号的计算器
答案:1 悬赏:50 手机版
解决时间 2021-11-10 06:04
- 提问者网友:我没有何以琛的痴心不悔
- 2021-11-09 14:31
求用以下类似程序编一个可以计算括号的计算器
最佳答案
- 五星知识达人网友:想偏头吻你
- 2021-11-09 14:40
将()当成op处理即可追问可以具体编写一下么?谢谢追答
void main()
{ int s[smax];
char op[smax];
int top=0;
int otop=0;
int i,num,x,y;
int rtop,rinput;
char o;
char ex[emax];
scanf("%s", ex);
i=0;
num=0;
s[0]=0;
top=1;
op[0]='+';
otop=1;
while (1)
{ if (ex[i] >=48 && ex[i]<58)
{ while (ex[i] >=48 && ex[i]<58)
num=num*10+ex[i++]-48;
s[top++]=num;
num=0;
}
else if (ex[i]==0) break;
else if (ex[i]=='(') op[otop++]=ex[i++];
else if (ex[i]==')')
{ o=op[--otop];
while (o!='(')
{ x=s[--top];
y=s[--top];
s[top++]=calc(o,x,y);
o=op[--otop];
}
i++;
}
else
{ rinput=rank(ex[i]);
o=op[--otop];
rtop=rank(o);
while (rtop>=rinput && rtop!=0 && o!='(')
{ x=s[--top];
y=s[--top];
s[top++]=calc(o,x,y);
o=op[--otop];
rtop=rank(o);
}
op[otop++]=o;
op[otop++]=ex[i++];
}
}
while (otop!=0)
{ x=s[--top];
y=s[--top];
o=op[--otop];
s[top++]=calc(o,x,y);
}
printf("%s=%d\n",ex,s[0]);
getch();
}
void main()
{ int s[smax];
char op[smax];
int top=0;
int otop=0;
int i,num,x,y;
int rtop,rinput;
char o;
char ex[emax];
scanf("%s", ex);
i=0;
num=0;
s[0]=0;
top=1;
op[0]='+';
otop=1;
while (1)
{ if (ex[i] >=48 && ex[i]<58)
{ while (ex[i] >=48 && ex[i]<58)
num=num*10+ex[i++]-48;
s[top++]=num;
num=0;
}
else if (ex[i]==0) break;
else if (ex[i]=='(') op[otop++]=ex[i++];
else if (ex[i]==')')
{ o=op[--otop];
while (o!='(')
{ x=s[--top];
y=s[--top];
s[top++]=calc(o,x,y);
o=op[--otop];
}
i++;
}
else
{ rinput=rank(ex[i]);
o=op[--otop];
rtop=rank(o);
while (rtop>=rinput && rtop!=0 && o!='(')
{ x=s[--top];
y=s[--top];
s[top++]=calc(o,x,y);
o=op[--otop];
rtop=rank(o);
}
op[otop++]=o;
op[otop++]=ex[i++];
}
}
while (otop!=0)
{ x=s[--top];
y=s[--top];
o=op[--otop];
s[top++]=calc(o,x,y);
}
printf("%s=%d\n",ex,s[0]);
getch();
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯