本题要求读入2个正整数A和B,然后只要输出它们的和就可以啦,唯一不同的是,这两个数字的大小可能,有亿点大....用字符串储存数字,用c语言实现
时间: 2024-04-29 14:21:18 浏览: 72
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main()
{
char a[MAX_LEN], b[MAX_LEN], c[MAX_LEN + 1];
int i, j, k, carry;
scanf("%s %s", a, b);
int len_a = strlen(a);
int len_b = strlen(b);
// 反转两个字符串
for (i = 0, j = len_a - 1; i < j; i++, j--) {
char temp = a[i];
a[i] = a[j];
a[j] = temp;
}
for (i = 0, j = len_b - 1; i < j; i++, j--) {
char temp = b[i];
b[i] = b[j];
b[j] = temp;
}
// 逐位相加
carry = 0;
for (i = 0, j = 0, k = 0; i < len_a || j < len_b || carry != 0; i++, j++, k++) {
int x = i < len_a ? a[i] - '0' : 0;
int y = j < len_b ? b[j] - '0' : 0;
int sum = x + y + carry;
c[k] = sum % 10 + '0';
carry = sum / 10;
}
// 反转结果字符串
int len_c = k;
for (i = 0, j = len_c - 1; i < j; i++, j--) {
char temp = c[i];
c[i] = c[j];
c[j] = temp;
}
c[len_c] = '\0';
printf("%s\n", c);
return 0;
}
```
这里采用了字符串相加的方法,即逐位相加,并将结果存储在一个新的字符串中。需要注意的是,由于两个数字可能非常大,所以要使用字符数组来存储它们。同时,由于需要进行逐位相加,所以需要将两个字符串反转,这样就可以从低位开始逐位相加了。最后,将结果字符串再次反转即可。
阅读全文