记录一下
#include#include #include using namespace std; int main() { int a[100], b[100], sum[100000]; memset(sum, 0, sizeof(sum)); memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); string a1, b1; cin >> a1 >> b1; int ia = a1.length(), ib = b1.length(); int ia1 = 0, ib1 = 0; while (ia) { a[ia1] = a1[ia-1] - '0'; //注意逻辑位与物理位 ia1++; ia--; } while (ib) { b[ib1] = b1[ib-1] - '0'; ib1++; ib--; } int high_num; //统计最高位 high_num = max(ia1, ib1); int next = 0; //进位值 int now; //当前位的值 int i; for (i = 0; i < high_num; i++) { now = a[i] + b[i] + next; sum[i] += now % 10; next = now / 10; } if (next != 0) { while (next) { sum[i] = next % 10; i++; next /= 10; } } for (int k = i - 1; k >= 0; k--) { cout << sum[k]; } return 0; }
没啥好说的,要注意的点就是
1.注意要用string类型才能输入更多位的数字窜
2.减’0’是为了将字符类型转位整型,参考ascii码
3.注意数组的逻辑位与物理位
4.注意相加产生的进位可能会超出两个数的位数,所以要添加一个if条件来判断



