char char1[1000] = "";
char char2[1000] = "";
printf("请输入数字1:");
gets(char1);
printf("请输入数字2:");
gets(char2);
int len1 = strlen(char1);
int len2 = strlen(char2);
//创建两个数组用于存储数字
int num1[1000] = {0};
int num2[1000] = {0};
//将char1中的字符转换成数字
for (int i = 0; i < len1; i++) {
num1[i] = char1[i] - 48;
}
//将char2中的字符转换成数字
for (int i = 0; i < len2; i++) {
num2[i] = char2[i] - 48;
}
//准备工作已经完成,现在开始计算
int temp = 0;//用于处理进位
int result[1000] = {0}; //用于保存结果,结果按逆序存储
int count = 0; //用于记录结果有多少位数字
for (int i = len1 - 1, j = len2 - 1; i >= 0 || j >= 0;) {
temp = num1[i] + num2[j] + temp;
result[count++] = temp % 10;
temp = temp / 10;
if (i >= 0) {
i--;
}
if (j >= 0) {
j--;
}
}
for (int i = count - 1; i >= 0; i--) {
printf("%d", result[i]);
}
实现超大数字相加
于 2021-10-21 22:22:50 首次发布