1913: 小火山的计算能力
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 501 Solved: 134
Submit Status Web Board
Description
别人说小火山的计算能力不行,小火山很生气,于是他想证明自己,现在有一个表达式,他想计算出来。
Input
首先是一个t(1<=20)表示测试组数。然后一个表达式,表达式长度不超过200,只有加法和减法,并且保证第一个字符不会是运算符号,最终结果小于2^63-1。
Output
输出运算结果。
Sample Input
21+12+1-1
Sample Output
22
模拟多个数相加,考思维,写代码能力;
代码:
#include<stdio.h>
#include<string.h>
char a[210];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s",a);
int len=strlen(a);
long long sum=0;
int i,j;
for(i=0;i<len;i++)
{
if(a[i]!='+'&&a[i]!='-')
{
sum=sum*10+(a[i]-'0');//先把第一个数存到sum中;
}
else
break;
}
long long c=0;//c是long long型的,因为它错了n次;
int flag=1;//记录符号;
for(j=i;j<=len;j++)
{
if(a[j]=='-'||a[j]=='\0')
{
sum=sum+c*flag;//此时flag为当前数的上一个符号;
flag=-1;//记录此时的符号;
c=0;
}
else if(a[j]=='+')
{
sum+=c*flag;
flag=1;
c=0;
}
else
c=c*10+a[j]-'0';
}
printf("%lld\n",sum);
}
return 0;
}