代码
代码好多板块分开写,是为了便于理解,大数加法原理是小学竖式计算
#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 |