两个大整数加法


代码

代码好多板块分开写,是为了便于理解,大数加法原理是小学竖式计算

#include <stdio.h>
#include <string.h>


char num1[1002], num2[1002];
int n1[1002], n2[1002];
int ans[1002];
int main() {
    
    scanf("%s", num1);
    scanf("%s", num2);
    int n1_size = strlen(num1);
    int n2_size = strlen(num2);
    n1[0] = n1_size, n2[0] = n2_size;

    for (int i = 0, j = n1_size; num1[0] && j; i++, j--) { //倒序存储 
        n1[j] = num1[i] - '0';
    }
    
    for (int i = 0, j = n2_size; num2[0] && j; i++, j--) { //倒序存储 
        n2[j] = num2[i] - '0';
    }
    
    ans[0] = n1_size > n2_size ? n1_size : n2_size;
    
    for (int i = 1; i <= ans[0]; i++) { //加法处理 
        ans[i] = n1[i] + n2[i];
    }
    
    for (int i = 1; i <= ans[0]; i++) { //进位处理 
        if (ans[i] > 9) {
            ++ans[i + 1];
            ans[i] -= 10;
        }
    }
    if (ans[ans[0] + 1]) ++ans[0];
    for (int i = ans[0]; i; i--) { //答案倒序输出 
        printf("%d", ans[i]);
    }
    printf("\n");
    return 0;
}

习题

欧拉计划25 欧拉计划13

文章作者: Axieyun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Axieyun !
评论
评论
  目录