代码:
#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;
}