浙大版《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;
}