ZSTUOJ刷题⑥:Problem 3535.--模拟简单计算器
3535: 模拟简单计算器
Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 4634 Solved: 1652
Description
程序模拟简单运算器的工作:输入一个算式(没有空格),遇到‘=’号说明输入结束,输出结果。假设计算器只能进行加、减、乘、除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。例如,输入“1+2*10-10/2"后结果为10。
Input
输入一个以等号结束的四则运算式(不含括号)
Output
输出计算结果
Sample Input
1+2*10-10/2= 1+3*5/2-7=
Sample Output
10 3
代码如下:
#include<bits/stdc++.h> using namespace std; int main(){ char str[1000]; while(gets(str)!=NULL){ int i; int result=0; int temp=0; int flag=0; char c; for(i=0;str[i]!='\0';i++) { if('0'<=str[i]&&str[i]<='9'){ temp=temp*10+str[i]-'0'; } else{ if(flag==1){ switch (c){ case '+': result+=temp; temp=0; c=str[i]; break; case '-': result-=temp; temp=0; c=str[i]; break; case '*': result*=temp; temp=0; c=str[i]; break; case '/': result/=temp; temp=0; c=str[i]; break; } } else{ result=temp; temp=0; c=str[i]; flag=1; } } } cout<<result<<endl; } return 0; }