大数相加

坎儿妹的又一道题,输入不超过1000位的大数(两个正整数),求和

void main() { char a[1002]; char b[1002]; char* c; int i, p = 0, q = 0, m, n, r; scanf( "%s %s", a, b ); while ( a[p++] ); p--; while ( b[q++] ); q--; c = ( p >= q ? a : b ); r = ( p >= q ? p : q ); c[r + 1] = 0; c[r] = 0x30; while ( p && q ) { i = a[--p] + b[--q] - 0x60; m = i % 10; // 个位 n = i / 10; // 十位 c[r--] += m; c[r] = n + 0x30; } if ( r ) { c[r] += c[r-1] - 0x30; while ( --r ) { c[r] = c[r - 1]; } c[0] = 0x30; } printf ( "%s/n", c[0] == 0x30 ? c + 1 : c ); system("pause"); }

两个数组,结果保存在最大数所在的数组中,不会另开新数组保存结果

你可能感兴趣的:(大数相加)