输入格式: 先输入一个正整数 n,在之后的n行中,每行输入给出2个正整数 A 和 B,大小不限。 输出格式: 对每一组输入,在每一行中输出 A+B 的值。用c语言完成上述要求的程序,注意A和B的大小不限
时间: 2024-02-18 12:06:02 浏览: 19
以下是使用C语言完成上述要求的程序,考虑A和B的大小不限:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 10005 // 定义最大长度
int main() {
int n;
scanf("%d", &n); // 输入n
char a[MAX_LEN], b[MAX_LEN], ans[MAX_LEN];
for (int i = 0; i < n; i++) {
scanf("%s%s", a, b); // 输入A和B
int len_a = strlen(a), len_b = strlen(b);
int max_len = (len_a > len_b ? len_a : len_b); // 取A和B长度的最大值
int carry = 0; // 进位标识
for (int j = 0; j < max_len; j++) {
int digit_a = j < len_a ? a[len_a - 1 - j] - '0' : 0; // 取A的第j位数字
int digit_b = j < len_b ? b[len_b - 1 - j] - '0' : 0; // 取B的第j位数字
int sum = digit_a + digit_b + carry; // 计算A+B的第j位数字之和
ans[max_len - 1 - j] = sum % 10 + '0'; // 记录A+B的第j位数字
carry = sum / 10; // 记录进位
}
if (carry) { // 如果最高位有进位
ans[0] = carry + '0'; // 最高位为进位
printf("%s\n", ans); // 输出A+B
} else {
printf("%s\n", &ans[1]); // 输出A+B
}
}
return 0;
}
```
程序中定义了三个字符数组,分别用于存储输入的A和B以及计算出的A+B。在输入时,使用循环遍历每组A和B。在计算A+B时,使用两个指针分别指向A和B的最低位,依次将相应位的数字相加并记录进位。最终得到的A+B的结果存放在ans数组中,需要注意的是,最高位有可能会有进位,因此需要特判。最后,输出ans数组即可。