C/C++ code#include
#include
#include
#include
#define M 1001
void AddResult(char *, char *);
int main(int argc, TCHAR *argv[])
{
int LineNum, i, j;
char StaFirst[M], StaSecond[M];
char SepFirst[20][M], SepSecond[20][M];
scanf("%d", &LineNum);
getchar();
for (i = 0; i < LineNum; i++)
{
scanf("%s %s", StaFirst, StaSecond);
for (j = 0; StaFirst[j] != '\0'; j++)
{
SepFirst[i][j] = StaFirst[j];
}
SepFirst[i][j] = 0;
for (j = 0; StaSecond[j] != '\0'; j++)
{
SepSecond[i][j] = StaSecond[j];
}
SepSecond[i][j] = 0;
}
for (i = 0; i < LineNum; i++)
{
printf("Case %d:\n%s + %s = ", i + 1, SepFirst[i], SepSecond[i]);
AddResult(SepFirst[i], SepSecond[i]);
putchar(10);
}
getchar();
return 0;
}
void AddResult(char *SepFirst, char *SepSecond)
{
int Result[M] = { 0 }, Assistant[M] = { 0 }, LenFirst, LenSecond, Lenth;
int i, j, CarryFlag = 0;
LenFirst = strlen(SepFirst);
LenSecond = strlen(SepSecond);
if (LenFirst <= LenSecond)
{
for (i = LenFirst - 1, j = 0; i >= 0; i--, j++)
{
Assistant[j] = (int)(SepFirst[i] - '0');
}
for (i = LenSecond - 1, j = 0; i >= 0; i--, j++)
{
Result[j] = (Assistant[j] + (int)(SepSecond[i] - '0') + CarryFlag) % 10;
CarryFlag = (Assistant[j] + (int)(SepSecond[i] - '0') + CarryFlag) / 10;
}
if (CarryFlag == 1)
{
Result[j] = CarryFlag;
Lenth = j;
}
else
Lenth = j - 1;
}
else
{
for (i = LenSecond - 1, j = 0; i >= 0; i--, j++)
{
Assistant[j] = (int)(SepSecond[i] - '0');
}
for (i = LenFirst - 1, j = 0; i >= 0; i--, j++)
{
Result[j] = (Assistant[j] + (int)(SepFirst[i] - '0') + CarryFlag) % 10;
CarryFlag = (Assistant[j] + (int)(SepFirst[i] - '0') + CarryFlag) / 10;
}
if (CarryFlag == 1)
{
Result[j] = CarryFlag;
Lenth = j;
}
else
Lenth = j - 1;
}
for (i = Lenth; i >= 0; i--)
{
printf("%d", Result[i]);
}
}