描述
I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.
A,B must be positive.
输入
The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line consists of two positive integers, A and B. Notice that the integers are very large, that means you should not process them by using 32-bit integer. You may assume the length of each integer will not exceed 1000.
输出
For each test case, you should output two lines. The first line is "Case #:", # means the number of the test case. The second line is the an equation "A + B = Sum", Sum means the result of A + B. Note there are some spaces int the equation.
样例输入
2
1 2
112233445566778899 998877665544332211
样例输出
Case 1:
1 + 2 = 3
Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110
#include <stdio.h>
#include <string.h>
int main(void)
{
int t, len1, len2, len3, i, j, max, min, flag;
char str1[1000], str2[1000], str3[1000], str4[1000],re[1001];
char temp,temp1;
scanf("%d", &t);
for(j=0; j<t; j++){
bzero(str1, sizeof(str1));
bzero(str2, sizeof(str2));
bzero(str3, sizeof(str3));
bzero(str4, sizeof(str4));
bzero(re, sizeof(re));
scanf("%s%s", str1, str2);
len1=strlen(str1);
len2=strlen(str2);
//printf("str1:%s %s\n", str1, str2);
strcpy(str3, str1);
strcpy(str4, str2);
/*字符串倒序*/
for(i=0; i<len1/2; i++){
temp=str1[i];
str1[i]=str1[len1-1-i];
str1[len1-1-i]=temp;
}
for(i=0; i<len2/2; i++){
temp=str2[i];
str2[i]=str2[len2-1-i];
str2[len2-1-i]=temp;
}
if(len1>len2){
max=len1;
min=len2;
}else{
max=len2;
min=len1;
}
/*运算*/
flag=0;
for(i=0; i<max; i++){
if(i<min){
temp1=str1[i]+str2[i]+flag-'0';
}else{
temp1=str1[i]+str2[i]+flag;
}
//printf(": %c %c\n", str1[i], str2[i]);
if(temp1 > '9'){
re[i]=temp1-10;
flag=1;
}else{
re[i]=temp1;
flag=0;
}
}
if(flag==1){
re[i]='1';
re[i+1]='\0';
}
len3=strlen(re);
for(i=0; i<len3/2; i++){
temp=re[i];
re[i]=re[len3-1-i];
re[len3-1-i]=temp;
}
printf("Case %d:\n%s + %s = %s\n", j+1, str3, str4, re);
}
return 0;
}