c语言实现两个长整数相加
时间: 2023-11-25 15:05:02 浏览: 151
C语言实现的长整数相加
3星 · 编辑精心推荐
以下是C语言实现两个长整数相加的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000 // 定义最大长度
char num1[MAX_LEN], num2[MAX_LEN], sum[MAX_LEN]; // 定义两个长整数及它们的和
void reverse(char s[]) { // 反转字符串
int len = strlen(s);
for (int i = 0; i < len / 2; i++) {
char tmp = s[i];
s[i] = s[len - i - 1];
s[len - i - 1] = tmp;
}
}
int main() {
scanf("%s%s", num1, num2); // 输入两个长整数
int len1 = strlen(num1), len2 = strlen(num2);
// 将两个长整数反转,方便从个位开始相加
reverse(num1);
reverse(num2);
int carry = 0; // 进位
int i, j;
for (i = 0, j = 0; i < len1 || j < len2 || carry; i++, j++) {
int a = i < len1 ? num1[i] - '0' : 0; // 如果已经加完了,就当成0
int b = j < len2 ? num2[j] - '0' : 0; // 如果已经加完了,就当成0
int s = a + b + carry; // 两个数相加再加上进位
sum[i] = s % 10 + '0'; // 取个位
carry = s / 10; // 取十位,作为下一次的进位
}
reverse(sum); // 将结果反转回来
printf("%s\n", sum); // 输出结果
return 0;
}
```
代码思路:
1. 定义三个字符数组,分别存储两个长整数及它们的和。
2. 输入两个长整数,计算它们的长度。
3. 将两个长整数反转,方便从个位开始相加。
4. 定义一个进位变量,初始值为0,从个位开始相加两个长整数,并加上进位。
5. 将相加的结果的个位存储到和中,并更新进位变量。
6. 循环执行步骤4和步骤5,直到两个长整数的所有位都相加完毕并且进位为0。
7. 将结果反转回来,输出和。
阅读全文