用c语言实现两个<100位正整数的高精度加法,要求两个加数均有键盘输入。一例如: 123456789012345678901234567890 + 9876543210987654321- =123456789022222222112222222211.
时间: 2024-04-23 09:25:48 浏览: 144
好的,以下是使用 C 语言实现两个<100位正整数的高精度加法的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 105 // 数字串最大长度
int main() {
char num1[MAX_LEN], num2[MAX_LEN];
int len1, len2, len;
int i, j, k;
int carry = 0; // 进位
// 读入两个数字字符串
printf("请输入第一个数字:");
scanf("%s", num1);
printf("请输入第二个数字:");
scanf("%s", num2);
len1 = strlen(num1);
len2 = strlen(num2);
len = len1 > len2 ? len1 : len2;
// 将两个数字字符串按位相加
int result[MAX_LEN] = {0}; // 存储加法结果
for (i = 0; i < len; i++) {
int a = i < len1 ? num1[len1 - i - 1] - '0' : 0; // 从低位到高位逐位取数字,若越界则填 0
int b = i < len2 ? num2[len2 - i - 1] - '0' : 0;
int sum = a + b + carry; // 当前位的和
result[i] = sum % 10; // 当前位的结果
carry = sum / 10; // 计算进位
}
if (carry > 0) { // 如果最高位有进位,则加上进位
result[len] = carry;
len++;
}
// 将结果倒序输出
printf("计算结果为:");
for (i = len - 1; i >= 0; i--) {
printf("%d", result[i]);
}
printf("\n");
return 0;
}
```
运行示例:
```
请输入第一个数字:123456789012345678901234567890
请输入第二个数字:9876543210987654321
计算结果为:123456789022222222112222222211
```
需要注意的是,由于 C 语言没有内置的高精度计算类型,因此我们需要手动实现按位相加的算法,具体实现方式与 Python 代码类似。另外,由于 C 语言中的字符串是以字符数组的形式存储的,因此我们需要倒序遍历每个数字位,从低位到高位逐位取数字并进行相加。
阅读全文