HUST Online Judge WebBoard
Problem 1103 >> 为什么会运行错误 82%
201803140220 @ 2019-05-20 20:16:02
[ Quote ] [ Edit ] [ Delete ] 1#
#include<stdio.h>
#include<string.h>

int main()
{
char ch[2000];
int a[2000]={0},b[2000]={0};
int i,c,l,l_a=0,l_b=0,l_s;

gets(ch);
l=strlen(ch);

for(i=l-1;ch[i]!='+';i--)
b[l_a++]=ch[i]-48;

for(i--;i>=0;i--)
a[l_b++]=ch[i]-48;

if(l_a>=l_b)
l_s=l_a;
else
l_s=l_b;

for(i=0;i<l_s;i++)
{
a[i]=a[i]+b[i];
c=a[i]/10;
a[i]=a[i]%10;
a[i+1]=a[i+1]+c;
if(i>=l_s-1 && c>0)
l_s++;
}

for(i=l_s-1;i>=0;i--)
printf("%d",a[i]);

printf("\n");

return 0;
}
/**************************************************************
Problem: 1103
User: 201803140220
Language: C
Result: 运行错误
****************************************************************/
201703120121 @ 2019-05-21 18:45:29
[ Quote ] [ Edit ] [ Delete ] 2#
数组越界了。
如果输入数据没有+,那么在for(i=l-1;ch[i]!='+';i--)就会报错。
另外,这个题目并没有说只有一个+,可能有多个+,所以你应该把这看成多个大数相加。