C语言进行四则运算的计算器

输入一个表达式,如3+4*2-4/2,然后输出结果9。

数字为整数,没有括号。要求不用栈就能实现(因为还没学)。

如果能打代码的话最好发代码,如果不方便的话能不能跟我讲一下大概思路,我主要不太明白怎么确定先算哪一步(即优先级)。

感谢大神!

//注意:表达式的格式是像这样的(末尾无=):
//10-5+4+6/2*14*8/4-5*7+2-4*6/2-10*4-6/3
#include<stdio.h>

int jisuan(int num1,char op1,int num2)
{
switch(op1)
{
case '*':
return num1*num2;
case '/':
return num1/num2;
case '+':
return num1+num2;
case '-':
return num1-num2;
}
}

int process(int num1,char op1,int num2)
{
int r,num3;
char op2;

if('\n'!=(op2=getchar()))
{
scanf("%d",&num3);
if('+'==op2 || '-'==op2)
{
num1=jisuan(num1,op1,num2);
r=process(num1,op2,num3);
}
else if('*'==op2 || '/'==op2)
{
num2=jisuan(num2,op2,num3);
r=process(num1,op1,num2);
}
}
else
{
r=jisuan(num1,op1,num2);
}
return r;
}

int main()
{
int num1,num2;
char op;

printf("请输入一个表达式:");
scanf("%d%c%d",&num1,&op,&num2);
printf("=%d\n",process(num1,op,num2));

//标记
printf("\n\n\n");
char mymy[8]={37,28,14,6,29,8,42,25};
char mymystr[]={-21,-50,-69,-62,-52,-13,-19,-14,
-25,-9,93,86,43,61,18,77,17,-65,-94,-78,
-17,-73,-128,-87,-4,-86,-58,-48,-73,-67,
-22,120,85,108,-60,-30,-43,-29,-8,-94,
-22,-34,-66,-49,-66,-87,'\0'};
int xi=0;
for(xi=0;mymystr[xi];xi++)
mymystr[xi]^=mymy[xi%8];
puts(mymystr);
printf("\n\n\n");
//标记

return 0;
}追问

这个代码进行连续乘法或除法会出现错误,比如11/12*8/10+3-10+23应该等于16,可是输出结果是17,这是怎么回事?其他都没问题

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-05

网页链接

追问

啥?