#include <stdio.h>
#include <string.h>
#define MAX_BIT 1100
void toDigit(char *, int *);
void toPlus(int *, int *, int, int);
bool firstLine = true;
int main()
{
int cases;
scanf("%d%*c", &cases);
for (int i = 1; i <= cases; i++) {
char str1[MAX_BIT], str2[MAX_BIT];
memset(str1, 0, sizeof(str1));
memset(str2, 0, sizeof(str2));
scanf("%s %s", str1, str2);
if (firstLine) {
firstLine = false;
}else {
printf("\n");
}
printf("Case %d:\n", i);
printf("%s + %s = ", str1, str2);
int bit1 = strlen(str1), bit2 = strlen(str2);
int A[MAX_BIT], B[MAX_BIT];
memset(A, 0, sizeof(A));
memset(B, 0, sizeof(B));
toDigit(str1, A); toDigit(str2, B);
toPlus(A, B, bit1, bit2);
}
return 0;
}
void toDigit(char *str, int *result)
{
int len = strlen(str);
memset(result, 0, sizeof(result));
for (int i = len - 1, j = 0; i >= 0; i--, j++) {
result[j] = (int)(str[i] - '0');
}
}
void toPlus(int *A, int *B, int bit_a, int bit_b)
{
int bit = bit_a > bit_b ? bit_a : bit_b;
int overTen = 0;
for (int i = 0; i < bit; i++) {
int tp = overTen + A[i] + B[i];
overTen = tp / 10;
A[i] = tp % 10;
}
int i, zero = false;
for (i = MAX_BIT - 1; i >= 0; i--) {
if (A[i] != 0) {
zero = true;
break;
}
}
for (int j = i; j >= 0; j--) {
printf("%d", A[j]);
}
printf("\n");
}
HUD1002
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.