大数相加(有正有负)
#include<stdio.h>
#include<string.h>
int main()
{
int q,d[10002]={0},lena,lenb,len,lene,i,j,k,daxiao,flag,x,y;
char a[10001],b[10001],c[10001],e[10001]={'\0'},t1[10001],t2[10001];
scanf("%s%s",a,b);
strcpy(t1,a);strcpy(t2,b);
//a与b都为负
if(a[0]=='-'&&b[0]=='-')
{x=lena=strlen(a)-1;
y=lenb=strlen(b)-1;
if(lena!=lenb)
{//a与b长度不同时。
if(lena<lenb)
{strcpy(c,a);strcpy(a,b);strcpy(b,c);
len=lena;lena=lenb;lenb=len;}
for(i=lena,j=lenb,k=0;j>0;i--,j--,k++)
{d[k]+=a[i]-'0'+b[j]-'0';
if(d[k]>9&&j!=1)
{d[k]-=10;d[k+1]+=1;}
}
if(d[lenb-1]>9)
{d[lenb]+=1;d[lenb-1]-=10;}
for(k=lenb,i=lena-lenb;i>0;k++,i--)
{d[k]+=a[i]-'0';
if(d[k]>9&&i!=1)
{d[k]-=10;d[k+1]+=1;}
}
if(d[lena-1]>9)
{d[lena-1]-=10;d[lena]+=1;lena++;}
printf("-");
for(i=lena-1;i>=0;i--)
printf("%d",d[i]);
lena=x;
lenb=y;
}
//a与b长度相同时。
if(lena==lenb)
{
for(i=lena,j=0;i>0;i--,j++)
{d[j]+=a[i]-'0'+b[i]-'0';
if(d[j]>9)
{d[j]-=10;d[j+1]+=1;}
}
if(d[lena]!=0)
lena+=1;
printf("-");
for(i=lena-1;i>=0;i--)
printf("%d",d[i]);
}
}
strcpy(a,t1);s