未AC原因:可能只考虑了两个数为正整数的情况
未AC代码
#include <stdio.h>
#include <string.h>
#include <math.h>
typedef struct
{
int array[1000];
int len;
}addnum;
addnum Init(void)
{
addnum a;
for(int i=0;i<1000;i++)
{
a.array[i]=0;
}
a.len=0;
return a;
}
void to_array(char s[],int len,addnum* a)//
{
for(int i=0;i<len;i++)
{
a->array[i]=s[len-1-i]-'0';
}
a->len=len;
}
addnum tosumup(addnum a,addnum b)
{
addnum c;
int i;
int carry=0;
for(i=0;(i<a.len)||(i<b.len);i++)
{
int temp=a.array[i]+b.array[i]+carry;
c.array[i]=temp%10;
carry=temp/10;
}
if(carry!=0)c.array[i++]=carry;
c.len=i;
return c;
}
int judge(addnum a,addnum b)
{
if(a.len>b.len)return 1;//a>b;
else if(a.len<b.len)return -1;//a<b;
else
{
for(int i=a.len;i>=0;i--)
{
if(a.array[i]>b.array[i])return 1;
else if(a.array[i]<b.array[i])return -1;
}
return 0;//相等
}
}
int main()
{
//
freopen("input.txt","r",stdin);
addnum a,b,c;
a=Init();b=Init();c=Init();
int i;
char str1[1001],str2[1001];
while(scanf("%s %s",str1,str2)!=EOF)
{
to_array(str1,strlen(str1),&a);
to_array(str2,strlen(str2),&b);
c=tosumup(a,b);
for(i=0;i<c.len;i++)
{
printf("%d",c.array[c.len-1-i]);
}
printf("\n");
}
}