用C语言完成以下功能:输入说明:输入数据包含测试实例个数M,每个测试实例包含两个二进制数N(被加数)和R(加数)。 输出说明:为每个测试实例输出相加后的二进制结果,每个输出占一行。
时间: 2024-09-16 10:00:51 浏览: 50
在C语言中,你可以通过标准库函数`scanf()`读取输入的整数M,然后用循环处理每一个测试实例。对于二进制数,可以将它们转换成十进制进行加法运算,然后再把结果转换回二进制字符串输出。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <stdlib.h> // 用于 malloc 和 free
#include <string.h>
// 将十进制数转换为二进制字符串
void dec_to_bin(int num, char *binary) {
int i = 0;
while (num > 0) {
binary[i] = num % 2 + '0';
num /= 2;
i++;
}
binary[i] = '\0'; // 结束符
// 反转字符串,因为 printf 默认从右向左打印
reverse(binary);
}
// 反转字符串
void reverse(char *str) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
int M, N, R;
// 输入测试实例数量
printf("请输入测试实例个数M: ");
scanf("%d", &M);
char *binary_result[M]; // 存储每个测试实例的结果
for (int m = 0; m < M; m++) {
// 输入被加数和加数
printf("请输入第%d个测试实例的被加数N: ", m + 1);
scanf("%d", &N);
printf("请输入第%d个测试实例的加数R: ", m + 1);
scanf("%d", &R);
// 相加并转换为二进制
int sum = N + R;
dec_to_bin(sum, binary_result[m]);
// 输出结果
printf("第%d个测试实例的和: %s\n", m + 1, binary_result[m]);
}
// 释放动态分配的内存
for (int i = 0; i < M; i++) {
free(binary_result[i]);
}
return 0;
}
```
阅读全文