原题在此:http://acm.hdu.edu.cn/showproblem.php?pid=1002
思路运用数组,小心进位后此位上的值要取余数;
#include <stdio.h>
#include <string.h>
char a[1005],b[1005];
int c[1005];
int main()
{
int t,a1,b1,a2,b2,i,ans,j,k;
scanf("%d",&t);
for(i=1;i<=t;i++)
{
memset(c,0,sizeof(c));
scanf("%s",a);
scanf("%s",b);
a2 = strlen(a);
b2 = strlen(b);
j = 0;
a1 = a2-1;
b1 = b2-1;
if(a1>b1){
while(b1>=0)
{
c[++j] += ((int)a[a1]-48)+((int)b[b1]-48);
c[j+1] += c[j]/10;
c[j] = c[j]%10;
a1--;
b1--;
}
while(a1>=0)
{
c[++j] += ((int)a[a1]-48);
c[j+1] += c[j]/10;
c[j] = c[j]%10;
a1--;
}
ans = j;
}else if(a1<b1){
while(a1>=0)
{
c[++j] += ((int)a[a1]-48)+((int)b[b1]-48);
c[j+1] += c[j]/10;
c[j] = c[j]%10;
a1--;
b1--;
}
while(b1>=0)
{
c[++j] += ((int)b[b1]-48);
c[j+1] += c[j]/10;
c[j] = c[j]%10;
b1--;
}
ans = j;
}else if(a1==b1){
while(a1>=0)
{
c[++j] += ((int)a[a1]-48)+((int)b[b1]-48);
c[j+1] += c[j]/10;
c[j] = c[j]%10;
a1--;
b1--;
}
ans = j;
}
printf("Case %d:\n",i);
if(c[j+1]!=0) j = j+1;
printf("%s + %s = ",a,b);
for(k=j;k>0;k--)
printf("%d",c[k]);
if(i!=t)//注意这个地方很坑
printf("\n\n");
else
printf("\n");
}
return 0;
}