简单计算器
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3765 Accepted Submission(s): 1231
Problem Description
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
Input
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
Output
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
Sample Input
1 + 2
4 + 2 * 5 - 7 / 11
0
Sample Output
本着平时抠门的精神,我不停的WA,最后把float改成double就过了。。。看来男人就得对自己狠一点,以后什么类型最长老子就用什么类型
#include #include #include #include using namespace std; double num[200]; char op[200]; char s[200]; int main() { while(gets(s)&&strcmp(s, "0")) { int nlen=0,olen=0; for(int i=0;i<200;++i)num[i]=0.0f; for(int i=0;i=0;--j,++k) num[nlen]+=number[j]*pow(10.0f, k*1.0f); nlen++; ++i; if(i>=strlen(s))break; op[olen++]=s[i]; i+=2; } int pre=0; for(int i=0;i=pre;--j) num[j]=k; } else if(op[i]=='/') { double k=num[i]/num[i+1]; for(int j=i+1;j>=pre;--j) num[j]=k; } else pre=i+1; } double sum=num[0]; for(int i=0;i