C语言求两个不超过200位的非负整数的和
时间: 2023-09-22 10:05:47 浏览: 216
在C语言中,可以使用字符串来表示超过int或long long能表示的整数,因此可以使用字符串处理的方式来求两个不超过200位的非负整数的和。具体步骤如下:
1. 定义两个字符串变量,分别表示两个非负整数,以及一个结果字符串变量。
2. 从字符串的最后一位开始,逐位相加,将结果存储在结果字符串中。需要注意的是,如果相加结果超过10,需要将进位保存,并在下一位相加时加上进位。
3. 最后将结果字符串反转,即可得到最终的结果。
下面是一个示例代码:
```
#include <stdio.h>
#include <string.h>
#define MAX_LEN 201
int main() {
char num1[MAX_LEN], num2[MAX_LEN], result[MAX_LEN];
int carry = 0, len1, len2, len, i, j, sum;
// 输入两个非负整数
scanf("%s%s", num1, num2);
len1 = strlen(num1);
len2 = strlen(num2);
// 取两个字符串长度的最大值
len = len1 > len2 ? len1 : len2;
// 逐位相加
for (i = len1 - 1, j = len2 - 1; i >= 0 || j >= 0; i--, j--) {
sum = carry;
if (i >= 0) sum += num1[i] - '0';
if (j >= 0) sum += num2[j] - '0';
result[len--] = sum % 10 + '0';
carry = sum / 10;
}
// 处理最高位的进位
if (carry > 0) result[len] = carry + '0';
// 反转结果字符串
printf("%s\n", strrev(result + len + 1));
return 0;
}
```
需要注意的是,在使用strrev函数时,需要包含string.h头文件。
阅读全文