ZSTUOJ刷题⑥:Problem 3535.--模拟简单计算器

3535: 模拟简单计算器

Time Limit: 1 Sec  Memory Limit: 64 MB
Submit: 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;
}

 

posted @ 2021-05-20 18:29  Ta7KiXuoul  阅读(88)  评论(0编辑  收藏  举报