Description
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
Input
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
Output
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
Sample Input
1 + 2 4 + 2 * 5 - 7 / 11 0
Sample Output
3.00 13.36
解题思想:
利用数组与switch语句,先读入一个数字再读入一个符号,根据读入的符号选择不同的语句,最后把所有的数累加输出。
代码如下:
#include <stdio.h>
int main()
{
int shu,i=0,m,flag,j;
double a[410],sum=0;
char fh;
// for(int j=0;j<200;j++)
while (1)
{
flag=0;
i=0;
for(j=0;j<410;j++)
a[i]=0;
scanf("%lf",&a[0]);
while (getchar()!='
')
{
sum=0;
flag=1;
scanf("%c %d",&fh,&m);
switch (fh)
{
case '+':a[++i]=m; break;
case '-': a[++i]=-m;break;
case '*':a[i]=a[i]*m;break;
case '/':a[i]=a[i]/m*1.0;break;
}
}
if(!flag) break;
for( j=0;j<=i;j++)
sum+=a[j];
printf ("%.2lf ",sum);
}
return 0;
}