#include
//函数,读数操作数
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;
}
用一个数组a作为存储数字的栈,另一个b作为存储操作符的栈,弹出一个操作符即弹出对应的两个数字进行运算,然后将运算结果压回a,直到a中只有一个元素,这个元素即为最后的结果。
将算式作为字符串输入,然后检测+_*/字符,再将符号间的字符还原为数字,从左到右计算完成。应该可以,你如果把赏分提高到20的话,我就写写程序。
楼下的涉及到数据结构,恐怕搂主看不懂吧。不过如果赏分提高到30的话,我就写写这个程序。