给多组大数,求所有相加之和。
#include <stdio.h>
#include <string.h>
// 该函数实现str1和str2相加,将结果保存在str1中
void add(char str1[], char str2[]) {
int i, j;
int l1 = strlen(str1);
int l2 = strlen(str2);
int a[1050], b[1050];
memset(a, 0, sizeof (a));
memset(b, 0, sizeof (b));
for (i=l1-1; i>=0; i--)
a[l1-i-1] = str1[i]-'0';
for (i=l2-1; i>=0; i--)
b[l2-i-1] = str2[i]-'0';
int m = l1 > l2 ? l1 : l2;
int cp = 0;
for (i=0; i<m; i++) {
int tmp = a[i] + b[i] + cp;
a[i] = tmp % 10;
cp = tmp / 10;
}
if (cp) {
a[i] = cp;
m++;
}
for (i=0, j=m-1; j>=0; j--, i++)
str1[i] = a[j]+'0';
str1[i] = '\0';
}
int main() {
char str1[1050], str2[1050];
str1[0] = '\0';
while (scanf("%s", str2) && strcmp(str2, "0")) {
add(str1, str2);
}
printf("%s\n", str1);
return 0;
}