PAT 06-1 简单计算器

想看一般简单计算器实现的看客不好意思了,这不是你想要点东西,此处题设为“只能进行加减乘除”、“都是整数”、”优先级相同“和"从左到右"。此题来自PAT(http://www.patest.cn/contests/mooc-c/06-1),我看一位园友用if...else写得,好吧,我的还是有点价值,题设要求及代码实现如下

 1 /*

 2     Name: 

 3     Copyright: 

 4     Author: 

 5     Date: 31/03/15 16:12

 6     Description: 

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

 8 

 9 输入格式:

10 

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

12 

13 输出格式:

14 

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

16 

17 输入样例:

18 1+2*10-10/2=

19 输出样例:

20 10

21 */

22 

23 #include <stdio.h>

24 #include <stdbool.h>

25 

26 int main()

27 {

28     int n, tmp;

29     char ch;

30     bool flag;

31     

32     flag = true;

33     scanf("%d", &n);

34     while((ch = getchar()) != '=')

35     {

36 //        printf("%c\n", ch); // for debug

37         scanf("%d", &tmp);

38 //        printf("%d\n", tmp); // for debug

39         if(tmp == 0 && ch == '/')

40             flag = false;

41         else

42         {

43             switch(ch)

44             {

45                 case '+':

46                     n += tmp;

47                     break;

48                 case '-':

49                     n -= tmp;

50                     break;

51                 case '*':

52                     n *= tmp;

53                     break;

54                 case '/':

55                     n /= tmp;

56                     break;

57                 default:

58                     flag = false;

59             }

60         }

61         

62         if(!flag)

63             break;

64     } 

65     

66     if(flag)

67         printf("%d\n", n);

68     else

69         printf("ERROR\n");

70         

71     return 0;

72 }

 

你可能感兴趣的:(计算器)