本题我使用数组来代替栈了。

#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<string>
using namespace std;
string s;
long long arr[50] = {0};
int k = 0;
int j = 0;
long long shu(int k, int l, int r)
{
	long long ans = 0,z=0;
	for (int m = l; m <= r; m++)
	{
		z = s[m] - '0';
		for (int n = k; k > 1; k--)
		{
			z = z * 10;
		}
		ans += z;
		k--;
	}
	return ans;
}
void jia(int m)
{
	int a = m - 1;
	arr[a - 1] = arr[a-1] + arr[a];
	arr[a] = 0;
	j--;
}
void jian(int m)
{
	int a = m - 1;
	arr[a - 1] = arr[a-1] - arr[a];
	arr[a] = 0;
	j--;
}
void cheng(int m)
{
	int a = m - 1;
	arr[a - 1] = arr[a-1] * arr[a];
	arr[a] = 0;
	j--;
}
void chu(int m)
{
	int a = m - 1;
	arr[a - 1] = arr[a-1] / arr[a];
	arr[a] = 0;
	j--;
}
int main()
{
	cin >> s;
	int i = 0;
	int l=0, r;
	l = 0;
	while (s[i] != '@')
	{
		if (s[i] >= '0' && s[i] <= '9')
		{
			k++;
		}
		if (s[i] == '.')
		{
			r = i - 1;
			arr[j] = shu(k, l, r);
			j++;
			k = 0;
		}
		if ((s[i] <'0' || s[i] > '9') && s[i + 1] >= '0' && s[i + 1] <= '9')
		{
			l = i + 1;
		}
		switch (s[i]) 
		{
			case'+':
				jia(j);
				break;
			case'-':
				jian(j);
				break;
			case'*':
				cheng(j);
				break;
			case'/':
				chu(j);
				break;
		}
		i++;
	}
	cout << arr[0] << endl;
}