解题思路:
首先将数字和符号空格分开输入,由于最后结果要保留两位小数,将数字定义为double型数组。在输入符号时,判断符号,如果是‘+’,不做处理;如果是‘-’,将a[i]变为它的相反数;如果是‘*’,将a[i]变成a[i]*a[i-1],a[i-1]重新赋值为0;如果是‘/’,将a[i]变成a[i-1]/a[i],a[i]重新赋值为0;最后写一个for循环将a[i]累加输出。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char s;
double ans,a[200]={0};
while(1)
{
scanf("%lf",&a[0]);
int i=1;
if(a[0]==0)
{
s=getchar();
if(s=='\n')
break;
}
while(1)
{
s=getchar();
if(s=='+')
{
scanf("%lf",&a[i]);
i++;
}
if(s=='-')
{
scanf("%lf",&a[i]);
a[i]=-a[i];
i++;
}
if(s=='*')
{
scanf("%lf",&a[i]);
a[i]=a[i-1]*a[i];
a[i-1]=0;
i++;
}
if(s=='/')
{
scanf("%lf",&a[i]);
a[i]=a[i-1]/a[i];
a[i-1]=0;
i++;
}
if(s=='\n')
break;
}
ans=0;
for(int j=0;j<i;j++)
{
ans+=a[j];
}
printf("%.2lf\n",ans);
}
return 0;
}