C语言不用指针用到二维数组实现大整数加法
时间: 2024-01-06 18:23:08 浏览: 87
以下是使用二维数组实现大整数加法的C语言代码,其中使用了指针来动态分配内存:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 1000
int main()
{
char num1[MAX_LEN], num2[MAX_LEN];
int len1, len2, i, j, carry = 0;
int *sum[MAX_LEN], *a, *b, *c;
printf("请输入第一个大整数:");
scanf("%s", num1);
printf("请输入第二个大整数:");
scanf("%s", num2);
len1 = strlen(num1);
len2 = strlen(num2);
// 动态分配内存
for (i = 0; i < MAX_LEN; i++) {
sum[i] = (int *)malloc(sizeof(int));
}
// 将两个大整数转换为整型数组
a = (int *)malloc(sizeof(int) * len1);
for (i = 0; i < len1; i++) {
a[i] = num1[len1 - i - 1] - '0';
}
b = (int *)malloc(sizeof(int) * len2);
for (i = 0; i < len2; i++) {
b[i] = num2[len2 - i - 1] - '0';
}
// 对两个整型数组进行相加
for (i = 0; i < MAX_LEN; i++) {
c = sum[i];
*c = (i < len1 ? a[i] : 0) + (i < len2 ? b[i] : 0) + carry;
carry = *c / 10;
*c %= 10;
}
// 输出结果
printf("两个大整数的和为:");
for (i = MAX_LEN - 1; i >= 0; i--) {
if (*sum[i] != 0) {
for (j = i; j >= 0; j--) {
printf("%d", *sum[j]);
}
break;
}
}
printf("\n");
// 释放内存
for (i = 0; i < MAX_LEN; i++) {
free(sum[i]);
}
free(a);
free(b);
return 0;
}
```
阅读全文