给多组大数,求所有相加之和。
#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; }
作者:zcube 发表于2013-1-1 0:38:31 原文链接
阅读:40 评论:0 查看评论