天天看點

習題6-7 簡單電腦 (20 分)習題6-7 簡單電腦 (20 分)二、題解c代碼

浙大版《C語言程式設計(第3版)》題目集

  • 習題6-7 簡單電腦 (20 分)
  • 二、題解
  • c代碼

習題6-7 簡單電腦 (20 分)

模拟簡單運算器的工作。假設電腦隻能進行加減乘除運算,運算數和結果都是整數,四種運算符的優先級相同,按從左到右的順序計算。

輸入格式:

輸入在一行中給出一個四則運算算式,沒有空格,且至少有一個操作數。遇等号”=”說明輸入結束。

輸出格式:

在一行中輸出算式的運算結果,或者如果除法分母為0或有非法運算符,則輸出錯誤資訊“ERROR”。

輸入樣例1:

輸出樣例1:

二、題解

先用sum存儲第一個數,後遇到操作符對sum與操作符後的數進行相對應的操作。

c代碼

#include <string.h>
#include <stdio.h>

char s[10010];

int P(int t) {     //計算數
    int cnt = 0;
    while(s[t] >= '0' && s[t] <= '9') {
        cnt = cnt + (s[t] - '0');
        t++;
        if(s[t] >= '0' && s[t] <= '9')  cnt *= 10;
    }
    return cnt;
}

int main() {
    scanf("%s", s);
    int len = strlen(s);
    
    int sum = P(0);
    for (int i = 0; i < len; i++) {
        if(s[i] < '0' || s[i] > '9') {   //目前位置是操作符
            switch (s[i]) {
                case '+' : sum = sum + P(i + 1); break;    
                case '-' : sum = sum - P(i + 1); break;
                case '*' : sum = sum * P(i + 1); break;
                case '/' : if(s[i + 1] == '0') {   //  '/'後是0
                    puts("ERROR");
                    return 0;
                }else sum = sum / P(i + 1); break;
                case '=' : printf("%d\n", sum); break;
                default : puts("ERROR");  return 0;    //非法
            }
        }
    }
    
    return 0;
}
           

繼續閱讀