用C语言写一个大整数加法
时间: 2023-03-28 10:01:35 浏览: 155
可以使用C语言的数组和循环来实现大整数加法。具体实现方法如下:
1. 定义两个字符串表示大整数,例如num1和num2。
2. 将两个字符串转换成整数数组,例如num1_arr和num2_arr。
3. 定义一个结果数组result_arr,长度为max(len(num1), len(num2)) + 1。
4. 从低位到高位依次将num1_arr和num2_arr对应位相加,将结果存入result_arr对应位。
5. 处理进位,如果result_arr[i] >= 10,则将进位加到result_arr[i+1]中。
6. 将result_arr转换成字符串表示的结果,例如result_str。
下面是代码示例:
```
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
void reverse(char *str) {
int len = strlen(str);
for (int i = ; i < len / 2; i++) {
char tmp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = tmp;
}
}
void big_int_add(char *num1, char *num2, char *result) {
int len1 = strlen(num1);
int len2 = strlen(num2);
int num1_arr[MAX_LEN] = {};
int num2_arr[MAX_LEN] = {};
int result_arr[MAX_LEN + 1] = {};
int max_len = len1 > len2 ? len1 : len2;
for (int i = ; i < len1; i++) {
num1_arr[i] = num1[len1 - i - 1] - '';
}
for (int i = ; i < len2; i++) {
num2_arr[i] = num2[len2 - i - 1] - '';
}
for (int i = ; i < max_len; i++) {
int sum = num1_arr[i] + num2_arr[i] + result_arr[i];
result_arr[i] = sum % 10;
result_arr[i+1] = sum / 10;
}
int result_len = max_len + result_arr[max_len];
for (int i = ; i < result_len; i++) {
result[i] = result_arr[result_len - i - 1] + '';
}
result[result_len] = '\';
reverse(result);
}
int main() {
char num1[MAX_LEN], num2[MAX_LEN], result[MAX_LEN + 1];
printf("请输入第一个大整数:");
scanf("%s", num1);
printf("请输入第二个大整数:");
scanf("%s", num2);
big_int_add(num1, num2, result);
printf("结果为:%s\n", result);
return ;
}
```
阅读全文