以前用过map,现在忘了,该复习一下了
#include<stdio.h>
#include<string>
#include<map>
using namespace std;
map<string,int>mp;
int main()
{
int i,t,n,a,sum=0;
char str[30],str2[30];
scanf("%d",&t);
while(t--)
{
sum=0;
scanf("%d",&n);
for(i=1;i<n;i++)
{
scanf("%s = %d",str,&a);
mp[str]=a;
}
scanf("%s",str);
a=0;
if(str[0]=='-')
{
if(str[1]>='0'&&str[1]<='9')
{
for(i=1;str[i];i++)
a=a*10+str[i]-'0';
}
else a=mp[str];
a=-a;
}
else
{
if(str[0]>='0'&&str[0]<='9')
{
for(i=0;str[i];i++)
a=a*10+str[i]-'0';
}
else a=mp[str];
}
sum+=a;
while(scanf("%s%s",str,str2),str[0]!='=')
{
a=0;
if(str2[0]=='-')
{
if(str2[1]>='0'&&str2[1]<='9')
{
for(i=1;str2[i];i++)
a=a*10+str2[i]-'0';
}
else a=mp[str2];
a=-a;
}
else
{
if(str2[0]>='0'&&str2[0]<='9')
{
for(i=0;str2[i];i++)
a=a*10+str2[i]-'0';
}
else a=mp[str2];
}
if(str[0]=='+')
sum+=a;
else sum-=a;
}
printf("%d\n",sum);
}
return 0;
}