习题6-7 简单计算器(20 分)

模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。

输入格式:

输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。

输出格式:

在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。

输入样例:

1+2*10-10/2=

输出样例:

10
#include <stdio.h>

int main()

{
    int i,sum,is=0;
    char op='0';//运算符初始值为'0' 
    scanf("%d",&sum);
    while(op!='=')
    {
        scanf("%c",&op);
        if(op=='=')
            break;
        scanf("%d",&i);
        if(op=='+')
            sum=sum+i;//题目要求不考虑计算优先级,可以直接从左到右顺序计算 
        else if(op=='-')//所以可以依次判断运算符,将新输入变量加到原来的结果上 
            sum=sum-i;
        else if(op=='*')
            sum=sum*i;
        else if(op=='/')
        {//判断除法除数是否合法 
            if(i!=0)//判断不为零的情况,而不是判断为零的情况 
                sum=sum/i;
            else
                //printf("ERROR");
                is=1;//设置判断点,输出时判断后输出 
        }
        else
            is=1;//输入除了+ —* / 之外的符号,视为非法错误输入 
        //printf("ERROR");
    }
    if(is==1)
        printf("ERROR");
    else
        printf("%d\n",sum);    
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/2228212230qq/p/9301619.html