```c
#include <stdio.h>
#include <string.h>
int main()
{
while(1)
{
char num[2][105];
for(int i =0;i<105;i++)
{num[1][i]='0';
num[0][i]='0';
}
int result[105]={0};
int i=1;
int j=0;
char temp =' ';
int mark[2];//0-1
int temp2=0;
while(scanf("%c",&temp))
{
if(temp=='\n')
{
mark[j]=i;
break;
}
if(temp==' ')
{
mark[j]=i;
j+=1;
i=1;
continue;
}
num[j][i]=temp;
i++;
}//读入数据,mark存了两个数字
if(mark[0]>mark[1])//mark 中的位数都是比实际多一位的 1234 456
{
int c=mark[0]-1;//4
int d=mark[1]-1;//3
for(;d>0;c--,d--)
{
num[1][c]=num[1][d];
num[1][d]='0';
}
temp2=mark[0]-1;
}
else if(mark[0]<mark[1])//mark 中的位数都是比实际多一位的
{
int c=mark[0]-1;//4
int d=mark[1]-1;//3
for(;c>0;c--,d--)
{
num[0][d]=num[0][c];
num[0][c]='0';
}
temp2=mark[1]-1;
}
else{temp2=mark[0]-1;}
//加法运算
int temp3=temp2;
for(;temp2>0;temp2--)
{
int sum=0;
sum=num[0][temp2]+num[1][temp2]-96;
result[temp2]=sum;
}
for(int n=temp3;n>=0;n--)
{
if(result[n]>=10)
{
result[n-1]+=1;
result[n]%=10;
}
}
for(int n=0;n<=temp3;n++)
{
if(n==0&&result[n]==0)
continue;
if(n==temp3)
{
printf("%d\n",result[n]);
break;
}
printf("%d",result[n]);
}
}
return 0;
}
```
把变量的声明都放在函数的开头,代码修改如下:
#include <stdio.h>
#include <string.h>
int main()
{
int i,j,mark[2],k,p;
char num[2][105]={0},temp,ch;
char result[105],x,y;
while(1)
{
mark[0]=0;
mark[1]=0;
i=0;j=0;
while(scanf("%c",&temp))
{
if(temp=='\n')
{
mark[j]=i;
i=0;
j=0;
break;
}
else if(temp==' ')
{
mark[j]=i;
j+=1;
i=0;
if(j>=2)
{
j=0;
break;
}
}else
{
num[j][i]=temp;
i++;
}
}//读入数据,mark存了两个数字
//字符串逆序
for (k=0,p=mark[0]-1;k<p;k++,p--)
{
ch = num[0][k];
num[0][k] = num[0][p];
num[0][p] = ch;
}
for (k=0,p=mark[1]-1;k<p;k++,p--)
{
ch = num[1][k];
num[1][k] = num[1][p];
num[1][p] = ch;
}
//累加
x = 0;
p = 0; //进位值
for (k=0;k<mark[0]&&k<mark[1];k++)
{
y = (num[0][k] - '0') + (num[1][k]-'0') + p;
result[x] = '0' + y%10;
p = y/10;
x++;
}
if (k==mark[0] && k==mark[1]) //位数相同
{
if(p)
{
result[x] = '0' + p;
x++;
}
}else if (k==mark[0] && k<mark[1])
{
for (;k<mark[1];k++)
{
y = (num[1][k] - '0') + p;
result[x] = '0' + y%10;
p = y/10;
x++;
}
}else
{
for (;k<mark[0];k++)
{
y = (num[0][k] - '0') + p;
result[x] = '0' + y%10;
p = y/10;
x++;
}
}
//显示
for (k=x-1;k>=0;k--)
{
printf("%c",result[k]);
}
printf("\n");
}
return 0;
}