/* 时间:2014.1.16.22.00 目的:大数求和 */ #include <stdio.h> #include <string.h> char a[1001],b[1001]; int c[1001]; int main() { int carr,len_a,len_b,i,j,temp,len; while(~scanf("%s %s", a, b)) { carr = len =0; len_a = strlen(a); len_b = strlen(b); for(i = len_a - 1,j = len_b - 1;i >= 0 && j >= 0;i--, --j) { temp = a[i] - ‘0‘ + b[j] - ‘0‘ + carr; c[len] = temp % 10; carr = temp / 10; len++; } while(i >= 0) { temp = carr + a[i] - ‘0‘; c[len] = temp % 10; carr = temp / 10; i--; len++; } // carr&&(c[len] = carr)&&(++len);此处我重复了一次 导致WA 因为当输出8 4 时 输出为112,多输出了一个1 while(j >= 0) { temp = carr + b[j] - ‘0‘; c[len] = temp % 10; carr = temp / 10; j--; len++; } carr&&(c[len] = carr)&&(++len); for(--len;len>=0;--len) printf("%d", c[len]); printf("\n"); } return 0; } /* 输出结果: --------------------- 2 6 思路: 1.由于数很大,必须用字符串存取 8 2.注意a,b串是从大高位到低位存储,故数字的最低位在串的最高位 10000000000000000000 100000000000000000000000000000003.c串的输出时高位到低位的输出 10000000000010000000000000000000 --------------------- */
原文:http://blog.csdn.net/z_x_b5/article/details/18372115