#include <stdio.h>
#include <string.h>
char* Add(char *big, char *small) //将位数较短的数加在较长的数上
{
if (strlen(big) < strlen(small))
{
char *temp = big;
big = small;
small = temp;
}
big[0] = small[0] = '0';
int i = strlen(big)-1, j = strlen(small)-1, sum, k;
for (i, j; i > 0 && j > 0; i--, j--) //模拟加法,从最后一位开始
{
sum = big[i]-'0' + small[j]-'0';
k = i;
while (sum > 9) //处理进位
{
big[k--] = sum%10 + '0';
sum = big[k]-'0' + 1;
}
big[k] = sum + '0';
}
if (big[0] == '0')
{
return big + 1;
}
return big;
}
int main()
{
char a[1005], b[1005];
int testNum, caseNum;
scanf("%d", &testNum);
for (caseNum = 1; caseNum <= testNum; caseNum++)
{
scanf("%s %s", a+1, b+1); //从数组的第二位开始存放,第一位预留给进位
printf("Case %d:\n%s + %s = ", caseNum, a+1, b+1);
printf("%s\n", Add(a, b));
if (caseNum != testNum)
{
printf("\n");
}
}
return 0;
}
超大整数加法
最新推荐文章于 2024-06-07 09:00:00 发布