当前位置: 代码迷 >> 综合 >> zzuli oj 1913 (模拟多个数相加)
  详细解决方案

zzuli oj 1913 (模拟多个数相加)

热度:108   发布时间:2023-10-13 22:09:42.0

1913: 小火山的计算能力

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 501   Solved: 134

SubmitStatusWeb 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;}elsec=c*10+a[j]-'0';}printf("%lld\n",sum);}return 0;
}