60分,求助
查看原帖
60分,求助
1582081
Zhangyihan23楼主2024/12/7 18:34
#include <iostream>
#include <cstring>
using namespace std;

char a[505] = {'0'}, b[505] = {'0'};
char c[506] = {'0'}; // 增加一个字符空间用于可能的进位

int main() {
    cin >> a >> b;
    int alen = strlen(a);
    int blen = strlen(b);
    bool jw = false; // 进位标志
    int tmpa, tmpb, sum;

    // 从后往前逐位相加
    for (int i = max(alen, blen) - 1; i >= 0; i--) {
        tmpa = (i < alen) ? a[i] - '0' : 0; // 如果a的当前位不存在,则补0
        tmpb = (i < blen) ? b[i] - '0' : 0; // 如果b的当前位不存在,则补0

        sum = tmpa + tmpb + jw; // 当前位的和
        c[i + 1] = sum % 10 + '0'; // 存储当前位的个位数
        jw = sum >= 10; // 更新进位标志
    }

    // 处理最高位的进位
    c[0] = jw ? '1' : '0';

    // 输出结果,跳过前导0
    int startIndex = c[0] == '0' ? 1 : 0;
    for (int i = startIndex; i <= max(alen, blen); i++) {
        cout << c[i];
    }

    return 0;
}
2024/12/7 18:34
加载中...