求杭电acm1002题的c代码 字符串的 十分感谢

2024-11-22 19:30:33
推荐回答(1个)
回答1:

#include
#include
int main()
{
int t,i,j,n,m,x,y,k,d,ca;
char a[1002],b[1002],c[1002];
scanf("%d",&n);
ca = 1;
while(n--)
{
d=0;
j=0;
scanf("%s %s",a,b);
if(ca>1) printf("\n");
printf("Case %d:\n%s + %s = ",ca++,a,b);
x=strlen(a);
y=strlen(b);
if(x==y)
{
for(i=x-1;i>=0;i--)
{
t=a[i]-'0'+b[i]-'0'+d;
d=t/10;
m=t%10;
c[j]=m+48;j++;
}
c[j] = d;
if(d)
{
c[j] = d+48;
c[j+1] = 0;
}
}
else if(x>y)
{
for(i=y-1;i>=0;i--)
{
t=a[i+x-y]-'0'+b[i]-'0'+d;
d=t/10;
m=t%10;
c[j]=m+48;j++;
}
for(k=x-y-1;k>=0;k--)
{
t=d+a[k]-'0';
d=t/10;
m=t%10;
c[j]=m+48;j++;
}
c[j] = d;
if(d)
{
c[j] = d+48;
c[j+1] = 0;
}
}
else{
for(i=x-1;i>=0;i--)
{
t=d+a[i]-'0'+b[i+y-x]-'0';
d=t/10;
m=t%10;
c[j]=48+m;j++;
}
for(k=y-1-x;k>=0;k--)
{
t=d+b[k]-'0';
d=t/10;
m=t%10;
c[j]=m+48;j++;
}
c[j] = 0;
if(d)
{
c[j] = d+48;
c[j+1] = 0;
}
}
for(j=strlen(c)-1;j>=0;j--)
{
printf("%c",c[j]);
}
printf("\n");
}
return 0;
}