用c语言编写递归函数,将一无符号整型数转换为二进制,放入数组中,并输出转换结果
时间: 2024-12-27 07:31:13 浏览: 10
在C语言中,我们可以使用递归函数将无符号整数转换成二进制并存储到数组中。下面是一个简单的例子,假设我们有一个名为`decimalToBinary`的递归函数,它接受一个无符号整数和一个指向数组的指针作为输入:
```c
#include <stdio.h>
#include <stdbool.h> // 添加bool类型,因为递归可能会导致堆栈溢出,可以检查是否达到最大位数
#define MAX_DIGITS 32 // 最大二进制位数,超过这个值需要用户确认或增加数组大小
// 递归函数,将十进制转换为二进制
void decimalToBinary(unsigned int num, unsigned char binary[], unsigned int* index) {
if (num == 0) { // 递归结束条件,当前位已为0
*index = 0;
return;
} else {
binary[*index] = num % 2; // 计算余数并存入数组
*index += 1;
decimalToBinary(num / 2, binary, index); // 递归调用,减半处理下一个位
}
}
// 主函数,演示使用
void convertAndPrint(unsigned int num) {
unsigned char binary[MAX_DIGITS];
unsigned int index = 0;
decimalToBinary(num, binary, &index);
printf("The binary representation of %u is ", num);
for (int i = index - 1; i >= 0; i--) { // 因为数组从后向前存放,所以倒序输出
printf("%d", binary[i]);
}
printf("\n");
}
int main() {
unsigned int user_input;
printf("Enter an unsigned integer: ");
scanf("%u", &user_input);
convertAndPrint(user_input);
return 0;
}
```
阅读全文