模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。
输入格式:
输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。
输出格式:
在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。
输入样例:1+2*10-10/2=输出样例:
10#include<stdio.h> #include<math.h> int main() { char ch[100], sign[100]; int num[100] = { 0 }; int i = 0, sum = 0, n = 0, t = 1; for (scanf("%c", &ch[i]); ch[i] != '='; scanf("%c", &ch[i])) { i++; } for (int j = 0; j < i; j++) { int k = j, flag = 0; while (ch[k] >= '0' && ch[k] <= '9') { k++; flag = 1; } while (j < k) { num[n] += (ch[j] - '0') * pow(10, k - j - 1); j++; } if (flag == 1) { n++; } } if (ch[0] == '-') { num[0] *= -1; } sum = num[0]; for (int m = 1; m < i; m++) { switch (ch[m]) { case '-': sum -= num[t]; t++; break; case '+': sum += num[t]; t++; break; case '*': sum *= num[t]; t++; break; case '/': if (num[t] == 0) { printf("ERROR\n"); return 0; } sum /= num[t]; t++; break; default: if (ch[m] < '0' || ch[m] > '9') { printf("ERROR\n"); return 0; } break; } } printf("%d\n", sum); return 0; }