代码:
- #include <cstdio>
- #include <iostream>
- #include <cctype>
- #include <cmath>
- #include <vector>
- using namespace std;
- vector <int> A, B;
- inline bool op(const char &a)//判断是不是运算符号
- {
- if(a == '*' || a == '+' || a == '/' || a == '-')
- return 1;
- else
- return 0;
- }
- inline int change(const vector<int> &v)//把几个单个的数转化成一个数
- {
- int sum = 0;
- int len = v.size();
- for(int i = 0; i < len; ++i)
- {
- sum += v[len - i - 1] * pow(10.0, i);
- }
- return sum;
- }
- int main()
- {
- int x, y;//x,y 保存运算数
- char c;// c 保存运算符号
- char buf[1000];// 保存输入字符串
- while(fgets(buf, sizeof(buf), stdin))
- {
- A.clear();
- B.clear();// A, B清空
- int flag = 0;
- for(int i = 0; buf[i] != 0; ++i)
- {// 判断字符的属性
- if(flag == 0 && isdigit(buf[i]))
- {
- A.push_back(buf[i] - '0');
- if(isdigit(buf[i + 1])) flag = 0;
- else flag = 1;
- }
- if(flag == 1 && op(buf[i]))
- {
- c = buf[i];
- flag = 2;
- }
- if(flag == 2 && isdigit(buf[i]))
- {
- B.push_back(buf[i] - '0');
- if(isdigit(buf[i + 1])) flag = 2;
- else break;
- }
- }
- x = change(A);
- y = change(B);
- switch(c)
- {
- case '+': printf("%d", x + y);
- break;
- case '-': printf("%d", x - y);
- break;
- case '*': printf("%d", x * y);
- break;
- case '/': printf("%d", x / y);
- break;
- default: break;
- }
- printf("\n");
- }
- return 0;
- }