C语言,计算器中的括号怎么做?

 我来答
战元修勾辛
2019-04-07 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:25%
帮助的人:1092万
展开全部
用堆栈实现。将含有多重括号的中缀表达式翻译成后缀表达式,然后进行计算。步骤是:
从左到右依次检查每个字符
1.如果该字符是数字,直接加入到输出队列中
2.如果该字符是左括号(,将其加入堆栈
3.如果该字符是右括号),开始出栈,将栈中元素依次加入到输出队列中,直到碰到左括号'('。左括号本身不加入队列。如果栈中没有左括号,返回匹配错误。
4.如果该字符是非括号运算符,将该字符的优先级和栈顶元素作比较。如果优先级高于栈顶元素则入栈,否则添加到输出队列中。
表达式全部检查完毕后,将栈中所有剩余元素加入到输出队列中。如果栈中含有括号,返回匹配错误。
最后得到的输出队列就是后缀表达式。
游玉枝邴莺
2019-09-03 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.3万
采纳率:28%
帮助的人:956万
展开全部
楼主你好
你写的代码比较繁琐
我写了一个较简洁的
(应你的要求
只能用if
else语句)
#include
#include
int
main(void)
{
int
choice;//选择
double
a,result;
while(1)
{
result=0.0;
printf("(1.加法
2.减法
3.乘法
4.除法
5.退出)\n输入你的选择:");
scanf("%d",&choice);
if(1
==
choice)
{
printf("输入一个实数a:");
while(1
==
scanf("%lf",&a))
result+=a;
}
else
if(2
==
choice)
{
int
flag=1;
printf("输入一个实数a:");
while(1
==
scanf("%lf",&a))
{
if(flag
==
1)
result+=a;
else
result-=a;
flag=0;
}
}
else
if(3
==
choice)
{
result=1.0;
printf("输入一个实数a:");
while(1
==
scanf("%lf",&a))
result*=a;
}
else
if(4
==
choice)
{
int
flag=1;
result=1.0;
printf("输入一个实数a:");
while(1
==
scanf("%lf",&a))
{
if(flag
==
1)
result/=a;
else
result*=a;
}
}
else
if(5
==
choice)
{
printf("最终结果:%.2f\n",result);
break;
}
else
printf("输入错误!\n");
printf("最终结果:%.2f\n",result);
system("pause");
system("cls");
getchar();
}
return
0;
}
希望能帮助你哈
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式