pta C 简单计算器

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

输入格式:

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

输出格式:

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

输入样例:

1+2*10-10/2=

输出样例:

10


 1 #include <stdio.h>
 2 int main()
 3 {
 4     char c;
 5     int ret;       //当前运算的结果
 6     int digit = 0; //操作数
 7     char op = 0;   //表前面的运算符
 8     int flag = 1;  //非法运算标志
 9     do {
10          scanf("%c", &c);
11          if (c>='0'&&c<='9') {
12              digit = digit*10+c-'0'; //和前面的数字组合在一起
13          }
14          else if (c=='+'||c=='-'||c=='*'||c=='/'||c=='=') {//此运算符前面的op对应的运算可做了
15                  if (op) {
16                      if (op=='+') ret += digit;   //digit是c前面的数,运算的第二个操作数
17                      else if (op=='-') ret -= digit;
18                      else if (op=='*') ret *= digit;
19                      else if (op=='/'&&digit) ret /= digit;
20                      else {flag = 0;break;} //除数为0非法
21                  }
22                  else {
23                      ret = digit; //op=0表明c是第一个运算符,ret初始化为  digit这第一个数
24                  }
25                  op = c;
26                  digit = 0; //为了c后面的数字
27          }
28          else {flag = 0;break;} //非法运算符
29      } while (c != '=');
30      if (flag) printf("%d\n", ret);
31      else printf("ERROR\n");
32      return 0;
33  }

  

猜你喜欢

转载自www.cnblogs.com/cannedfish/p/10879011.html