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