-
题目描述:
-
实现一个加法器,使其能够输出a+b的值。
-
输入:
-
输入包括两个数a和b,其中a和b的位数不超过1000位。
-
输出:
-
可能有多组测试数据,对于每组数据,
输出a+b的值。
-
样例输入:
-
2 6 10000000000000000000 10000000000000000000000000000000
-
样例输出:
-
8 10000000000010000000000000000000
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1005
int main() {
char a[MAX], b[MAX];
int i, j, lena, lenb, c[MAX], k, flag;
while(scanf("%s", a) != EOF) {
getchar();
scanf("%s", b);
//printf("%s %s", a, b);
lena = strlen(a);
lenb = strlen(b);//printf("%d,%d\n", lena, lenb);
k = 0;
flag = 0;
for(i = lena - 1, j = lenb - 1; i >= 0 && j >= 0; i--, j--) {
c[k++] = ((a[i] - '0') + (b[j] - '0') + flag) % 10;
flag = ((a[i] - '0') + (b[j] - '0') + flag) / 10;
// printf("%d---", c[k - 1]);
}
while(i >= 0) {
c[k++] = ((a[i] - '0') + flag) % 10;
flag = ((a[i] - '0') + flag) / 10;
i--;
}
while(j >= 0) {
c[k++] = ((b[j] - '0') + flag) % 10;
flag = ((b[j] - '0') + flag) / 10;
j--;
//printf("%d.....", c[k - 1]);
}
if(flag != 0) {
c[k++] = flag;
}
for(i = k - 1; i >= 0; i--) {
printf("%d", c[i]);
}
printf("\n");
}
return 0;
}