程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> PAT 06-1 簡單計算器,pat06-1計算器

PAT 06-1 簡單計算器,pat06-1計算器

編輯:關於C語言

PAT 06-1 簡單計算器,pat06-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 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved