1 #include <iostream>
2 #include <algorithm>
3 using namespace std;
4 int nCases;
5 int m[1001], n[1001];
6 char a[1001], b[1001];
7 int main()
8 {
9 scanf("%d", &nCases);
10 for(int i = 1; i <= nCases; ++i)
11 {
12 memset(m, 0, sizeof(m));
13 memset(n, 0, sizeof(n));
14 getchar();
15 scanf("%s %s", a, b);
16 int len1 = strlen(a);
17 int len2 = strlen(b);
18 if(len1 > len2) //是m长度大于n
19 {
20 // 把字符数组a逆序转成int数组m
21 int cnt = 0;
22 for(int j = len1-1; j >= 0; --j)
23 m[cnt++] = a[j] - '0';
24 // 把字符数组b逆序转成int数组n
25 cnt = 0;
26 for(int j = len2-1; j >= 0; --j)
27 n[cnt++] = b[j] - '0';
28 }
29 else
30 {
31 // 把字符数组a逆序转成int数组n
32 int cnt = 0;
33 for(int j = len1-1; j >= 0; --j)
34 n[cnt++] = a[j] - '0';
35 // 把字符数组b逆序转成int数组m
36 cnt = 0;
37 for(int j = len2-1; j >= 0; --j)
38 m[cnt++] = b[j] - '0';
39 }
40 int len = len1 > len2? len2: len1;
41 int k = 0; //指示最高位
42
43 for(int j = 0; j < len; ++j)
44 {
45 m[j] += n[j];
46 if(m[j] >= 10)
47 k = j+1;
48 m[j+1] += (m[j]/10);
49 m[j] %= 10;
50 }
51 printf("Case %d:\n", i);
52 printf("%s + %s = ",a, b);
53 len = len1>len2? len1: len2;
54 if(k < len-1)
55 k = len-1;
56 for(int j = k; j >= 0; --j)
57 printf("%d", m[j]);
58 i == nCases? printf("\n"): printf("\n\n");
59 }
60 return 0;
61 }