在求解两个大整型数相加时,因为输入的整型数据的位数可以达到几百几千位,因此,没有任何一种类型的变量能够表示这样的大整数。所以不能直接使用一般的加法进行求和。
因此我们必须使用另外的数据类型来表示这两个大整数,字符串类型无疑是最好的选择。我们定义两个字符类型的数组来存储这两个大整数。和一般的加法一样,也需要从最低位开始求和。因为此时已经和一般的加法不同,我们按位求两个字符数组对应位的数字和,应当考虑到进位。
#include <iostream> using namespace std; int main() { char a[1010], b[1010],sum[1020]; int T,aa, bb; int lenofa, lenofb,jinwei; cin >> T; int i = 1,m,n,k,temp; while (i <= T) { cin >> a >> b; m=lenofa = strlen(a)-1; n=lenofb = strlen(b)-1; jinwei = 0; k = 0; temp = 0; while (m >= 0 || n >= 0) { if (m >= 0 && n >= 0) { temp = a[m] - '0' + b[n] - '0' + jinwei; } else if (m < 0 && n >= 0) { temp = b[n] - '0' + jinwei; } else if (m >= 0 && n < 0) { temp = a[m] - '0' + jinwei; } sum[k++] = temp % 10 + '0'; jinwei = temp / 10 ; m--; n--; } if (jinwei > 0) { sum[k++] = jinwei+'0'; } cout << "Case " << i << ":" << endl << a << " + " << b << " = "; for (m = k - 1; m >= 0; m--) { cout << sum[m]; } cout << endl; if (i++ != T) cout << endl; } system("pause"); return 0; }