用c语言编程四则混合运算计算器

如题所述

使用反序.栈
比如5
+
3在栈里表示为5
3
+
扫描完整个用户输入的算式之后,从栈顶依次pop
如果是一个运算符(+),
就从栈里取两个数字(5,
3)进行运算
当然还有括号,比一般的+-*/级别高一些,可以再用一个栈
放括号.
最后两个栈都空,表名算式是正确的.
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-08-09
#include
<stdio.h>
//函数,读数操作数
int
getnextnum()
{
int
ret;
scanf("%d",&ret);
return
ret;
}
//函数,读运算符
char
getopt()
{
return
getchar();
}
//函数,计算
int
caculate(int
op1
,
int
op2
,char
opt)
{
if(opt=='+')return
op1+op2;
if(opt=='-')return
op1-op2;
if(opt=='*')return
op1*op2;
if(opt=='/')return
op1/op2;
return
0;
}
int
main()
{
int
op1,op2;
char
opt;
//计算结果放在第一个操作数
op1
=
getnextnum();
while(1)
{
opt
=
getopt();
if
(
opt
==
'='
)
break;
op2
=
getnextnum();
op1
=
caculate(op1,op2,opt);
}
printf("%d\n",op1);
}
return
0;
}
第2个回答  2019-07-12
#include<stdio.h>
void
main()
{
float
a,b;
char
d;
printf("请输入两个数a,b:");
scanf("%f,%f"&a,&b);
printf("请输入符号d");
scanf("%c",d);
switch(d)
{
case'+':printf("%f\n,a+b);break;
case'-':printf("%f\n,a-b);break;
case'*':printf("%f\n,a*b);break;
case'/':printf("%f\n,a/b);break;
default:printf("input
error\n");
}
}
相似回答