zzulioj1913: 小火山的计算能力

Description

别人说小火山的计算能力不行,小火山很生气,于是他想证明自己,现在有一个表达式,他想计算出来。

Input

首先是一个t(1<=20)表示测试组数。然后一个表达式,表达式长度不超过200,只有加法和减法,并且保证第一个字符不会是运算符号,最终结果小于2^63-1。

Output

输出运算结果。

Sample Input

2
1+1
2+1-1

Sample Output

2
2
题目中限制结果小于2^63-1 用long long去做就可以 其他的直接看代码 代码很容易理解
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
char a[2016];
int vis[201];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(vis,0,sizeof(vis));
scanf("%s",a);
    int  len=strlen(a);
for(int i=0;i<len;i++)
{
if(a[i]=='+'||a[i]=='-')
vis[i]=1;
}
      a[len]='+';  //这里对a[len]赋值有两个用处 
  int j=len;  //这是第一个用处  让sum开始直接加上第一个数 
      vis[len]=1;
long long ans=0,sum=0;

for(int i=0;i<=len;i++)//注意包括len  否则最后一个数会加不上  因为没有判定到vis[]=1   这是第二个用处 
{
  if(vis[i]==0)
  {
   ans=ans*10+a[i]-'0';
  }
  else
  {
  if(a[j]=='+')
  {
  sum+=ans;
}
if(a[j]=='-')
{
sum-=ans;
}
j=i;//替换符号的 ip 
ans=0;
  }
}
printf("%lld ",sum);
}
return 0;
}
原文地址:https://www.cnblogs.com/kingjordan/p/12027070.html