#include
void
js(float *i,int j,char c)
{
float m;
scanf("%f",&m);
if(c=='*')
i[j]=i[j]*m;
else
i[j]=i[j]/m;
}
void js2(float *i, char *c, int j, int k)
{
int l = 0;
for (int o=0; o<=k; o++)
{
if (c[o] == '+')
i[l+1] = i[l] + i[l+1];
else
i[l+1] = i[l] - i[l+1];
l++;
}
}
int
main(void)
{
int ic=0,j=0,k=0;
float i[100];
char c[100];
while(1)
{
if(ic==0)
{
scanf("%f",&i[j++]);
ic=1;
}
if(ic=1)
{
c[k++]=getchar();
if(c[k-1]=='*'||c[k-1]=='/')
{
js(i,j-1,c[k-1]);
k--;
continue ;
}
else if(c[k-1]=='\n')
break;
ic=0;
}
}
js2(i,c,j-1,k-2);
printf("%f", i[j-1]);
return 0;
}
算法流程:
1,如果读入数字就把它存入数组中,
2,如果读入加,减号就存如另一个数组用,如果读入乘 除号,就再读入一个数字,从存数字的数组拿出两个数字进行乘 除运算。把结果存入数组中,这么重复直到读入回车键的符号。
3,读到回车符号后,就从存符号的数组中拿出一个符号,再从存数字的数组中拿出两个数字进行相应计算,接着再拿出一个数字一个符号和之前计算结果进行相应计算,一直重复,直到所有符号都拿出来了。
4,剩下的最后一个数字就是计算结果。
注:这个是我是我很久之前回答别人的,地址是https://zhidao.baidu.com/question/454652508527253645