HUST Online Judge WebBoard
Problem 1103 >> 谁能告诉我是哪里疏忽了?总是答案错误%36
201803120103 @ 2019-10-13 20:19:05
[ Quote ] [ Edit ] [ Delete ] 1#
```
#include <stdio.h>
#include <string.h>

int b[110]={0};
void Add(char *number);

int main()
{
char str[1501],mod[110];
int n=0,i,flag;
scanf("%s",str);
for(i=0;str[i]!='\0';i++)
{
if(str[i]=='+' || str[i+1]=='\0')
{
if(str[i+1]=='\0')
mod[n++]=str[i];
mod[n]='\0';
//printf("%s\n",mod);
Add(mod);
n=0;
continue;
}
mod[n++]=str[i];
}
for(i=0;i<110;i++)
if(b[i]>0)
{
flag=i;
break;
}
for(i=flag;i<110;i++)
printf("%d",b[i]);
printf("\n");
return 0;
}


void Add(char *number)
{
int i,temp,len,t,j;
int a[110]={0};
len=strlen(number);
//printf("长度是:%d\n",len);
for(i=len-1,j=109;i>=0;i--,j--)
a[j]=number[i]-'0';
temp=0;
for(j=109;j>0;j--)
{
t=a[j]+b[j]+temp;
b[j]=t%10;
temp=t/10;
}

}
```
201803140220 @ 2019-10-18 09:46:48
[ Quote ] [ Edit ] [ Delete ] 2#
再仔细读一下题:"表达式总长度< =1500"
若是一个 有1400位的数+1 就会超限
所以需要再扩大一下数组