Problem Description
Input
Output
Sample Input
2 1 2 112233445566778899 998877665544332211
Sample Output
Case 1: 1 + 2 = 3 Case 2: 112233445566778899 + 998877665544332211 = 1111111111111111110
#include<stdio.h>
//#include<stdlib.h>
#include<string.h>
int main()
{
int T,t=1;
scanf("%d",&T);
while(T--)
{
char s1[2000],s2[2000];
int num1[2000]={0},num2[2000]={0},len1,len2,i,j;//数组清零
scanf("%s %s",&s1,&s2);
//gets(s1);
//gets(s2);//输入两个大数装入字符数组
len1=strlen(s1);
len2=strlen(s2);//获得大数的长度
for(i=len1-1,j=0;i>=0;i--)
num1[j++]=s1[i]-'0';
for(i=len2-1,j=0;i>=0;i--)
num2[j++]=s2[i]-'0';//将字符数组的值转化为整形数值并装入数组
for(i=0;i<2000;i++)
{
num1[i]+=num2[i];
if(num1[i]>9)
{
num1[i]=num1[i]-10;
num1[i+1]++;
}
//for(i=0;i<2000;i++)
//printf("%d\n",num1[i]);
}
printf("Case %d:\n",t++);
printf("%s + %s = ",s1,s2);
for(i=1999;(i>=0)&&(num1[i]==0);i--);//从高位找到第一个不是零的数
if(i>=0)
{
for(;i>=0;i--)
{
printf("%d",num1[i]);
}
printf("\n");//输出数组
}
else
{printf("0\n"); }
if(T>=1)
printf("\n");
}
//system("pause");
return 0;
}