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

来源:互联网 发布:json fromobject jar 编辑:程序博客网 时间:2024/04/28 22:26

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


0 0