想看一般簡單計算器實現的看客不好意思了,這不是你想要點東西,此處題設為“只能進行加減乘除”、“都是整數”、”優先級相同“和"從左到右"。此題來自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 }