#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[501],b[501],c[501],lena,lenb,lenc;
char a1[501],b1[501];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(a,0,sizeof(c));
gets(a1);
gets(b1);
lena = strlen(a1);
lenb = strlen(b1);
if(lena < lenb || (lena == lenb && strcmp(a1,b1) < 0))
{
char n[501];
strcpy(n,a1);
strcpy(a1,b1);
strcpy(b1,n);
cout << '-';
}
for(int i=0;i<=lena;i++) a[lena-i] = int(a1[i])- 48;
for(int i=0;i<=lenb;i++) b[lenb-i] = int(b1[i])- 48;
int i = 1;
while(i <= lena || i<= lenb)
{
while(a[i]<b[i])
{
a[i] += 10;
a[i+1]--;
}
c[i] = a[i]+b[i];
i++;
}
lenc = i;
while((c[lenc]==0)&&(lenc>1)) lenc--;
for(int i=lenc;i>=1;i--) cout << c[i];
return 0;
}
然后……
输入:
1
2
输出:
-703
不知道错在哪里,我对差为负数情况做了特判的,为什么会出现这种情况