#include <stdio.h>
#include <string.h>
#define MAX 1000
int a1[MAX+100];
int a2[MAX+100];
char str1[MAX+100];
char str2[MAX+100];
int main()
{
int N, k;
scanf("%d",&N);
for(k=1;k<=N;k++)
{
scanf("%s%s",str1,str2);
memset(a1,0,sizeof(a1)); //数组全部赋值为0
memset(a2,0,sizeof(a2));
int i, j, len1, len2;
len1=strlen(str1);
len2=strlen(str2);
/*for(i=MAX+100-1;i>=0;i--)
printf("%d",a1[i]);
printf("\n");
printf("**********************************\n");*/
for(i=len1-1,j=0;i>=0;i--) //把数字按右对齐的方式存放在整型数组中
{
a1[j++]=str1[i]-'0'; //字符型转化成整型数
}
/*for(i=MAX+100-1;i>=0;i--)
printf("%d",a1[i]);
printf("\n");
printf("**********************************\n");*/
for(i=len2-1,j=0;i>=0;i--)
{
a2[j++]=str2[i]-'0';
}
for(i=0;i<MAX+100;i++)
{
a1[i]+=a2[i];
if(a1[i]>=10) //看是否进位
{
a1[i]=a1[i]-10;
a1[i+1]++; //进位的话它的下一位的加1
}
}
/*for(i=MAX+100-1;i>=0;i--)
printf("%d",a1[i]);*/
printf("Case %d:\n",k);
printf("%s + %s = ",str1,str2);
for(i=MAX+100-1;i>=0;i--) //注意起点是MAX+100-1并不是MAX+100要不然就要出错,切忌这点
{
if(i>=0&&a1[i]!=0)
{
for(;i>=0;i--)
printf("%d",a1[i]);
printf("\n");
}
else if(i==0&&a1[i]==0)
printf("0\n");
}
if(k<N) //需要注意这点的,最后一个并没有换行的,要不然你就要PE了
printf("\n");
}
return 0;
}
HDU1002
最新推荐文章于 2020-08-17 22:11:42 发布