此题杀死各种新手,当年被此题卡住两个星期辗转难眠,最终发现拿数组存下每位数然后模仿笔算即可,附渣代码:
#include <stdio.h>
#include <string.h>
void main()
{
char s1[1001],s2[1001];
int cas,c,i,j,x,lc;
while(scanf("%d",&cas)!=EOF)
{
for(x=1;x<=cas;x++)
{
scanf("%s%s",s1,s2);
int a[1001]={0},b[1001]={0};
for(i=strlen(s1)-1,j=0;i>=0;i--,j++)
a[i]=s1[j]-'0';
c=j+1;
for(i=strlen(s2)-1,j=0;i>=0;i--,j++)//将输入的数字倒转过来好从数组第0位开始操作
b[i]=s2[j]-'0';
j++;
lc=j>c?j:c;
c=0;
for(i=0;i<=lc;i++) //模拟笔算,基础大数加法过程。。。
{
a[i]+=b[i]+c;
c=a[i]/10;
a[i]%=10;
}
for(i=lc;a[i]==0;i--);
lc=i;
printf("Case %d:\n%s + %s = ",x,s1,s2);
for(i=lc;i>=0;i--)
printf("%d",a[i]);
printf("\n");
if(x!=cas)printf("\n");//格式要注意处理下,PE了很多次
}
}
}