递归函数输出一个十进制整数的二进制形式c语言
时间: 2023-07-13 11:17:04 浏览: 445
好的,这个问题可以使用递归函数来解决。下面是一个示例代码:
```c
#include <stdio.h>
void dec2bin(int n) {
if(n == 0) return;
dec2bin(n / 2);
printf("%d", n % 2);
}
int main() {
int n;
scanf("%d", &n);
dec2bin(n);
printf("\n");
return 0;
}
```
这个程序接收一个十进制整数作为输入,然后使用递归函数 `dec2bin` 将它转换为二进制形式并输出。具体来说,递归函数的实现如下:
- 如果当前数字 `n` 等于 0,直接返回。
- 否则,递归处理 `n/2`,然后输出 `n%2`。
这个递归过程会一直进行直到 `n` 等于 0,然后逆序输出每一位二进制数即可。
相关问题
c语言递归函数十进制转二进制
在C语言中,递归函数可以用来将十进制整数转换成二进制表示。递归的基本思想就是把大问题分解成小问题,直到遇到基本情况。对于十进制转二进制,基本情况通常是当十进制数为0时。下面是递归实现的一个简单例子:
```c
#include <stdio.h>
#include <limits.h> // 引入INT_MAX用于防止溢出
// 递归函数,将十进制数转二进制字符串
char* decimalToBinary(int n) {
static char binary[40]; // 静态数组用于存储二进制字符串
if (n == 0) { // 基本情况:n为0,结束递归
binary[0] = '\0'; // 结束字符串
return binary;
}
// 计算当前位的二进制值,并追加到结果字符串
binary[strlen(binary)] = n % 2 + '0';
// 递归调用,去掉最低位(最右边的1)
return decimalToBinary(n / 2);
}
int main() {
int num;
printf("请输入一个十进制整数: ");
scanf("%d", &num);
char* result = decimalToBinary(num);
printf("该数的二进制形式是: %s\n", result);
free(result); // 释放静态数组内存
return 0;
}
```
在这个程序中,用户输入一个十进制整数,`decimalToBinary`函数会不断地除以2并将余数作为二进制的最低位添加到结果字符串中,直到整数变为0为止。
用在同一个链表中实现将一个十进制整数转换成八进制整数,要求输入一个十进制数,输出一个八进制数;将一个十进制整数转换成二进制整数,要求输入一个十进制数,输出一个二进制数;用C语言代码表示
在C语言中,我们可以使用递归函数来分别实现十进制到八进制和二进制的转换,因为这两种进制转换都是通过不断除以基数并取余数的过程完成的。以下是两个函数的例子:
1. 十进制转八进制:
```c
#include <stdio.h>
#include <string.h>
// Function to convert decimal to octal using recursion
void dec_to_oct(int num, char* octal) {
if (num == 0)
return;
octal[strlen(octal)] = '0' + num % 8; // Add digit to octal string
dec_to_oct(num / 8, octal); // Recursively call with reduced number
}
int main() {
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
char octal[40]; // Assuming the maximum octal value is less than 9 digits
dec_to_oct(decimal, octal);
octal[strlen(octal) - 1] = '\0'; // Adding null terminator
printf("Octal representation: %s\n", octal);
return 0;
}
```
2. 十进制转二进制:
```c
#include <stdio.h>
#include <stdbool.h>
// Function to convert decimal to binary using recursion
bool dec_to_bin(int num, char* binary) {
if (num == 0)
return false;
binary[strlen(binary)] = num % 2 ? '1' : '0'; // Add bit to binary string
return dec_to_bin(num / 2, binary);
}
int main() {
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
char binary[40]; // Assuming the maximum binary value is less than 32 bits
if (!dec_to_bin(decimal, binary)) {
binary[0] = '0'; // Handle case when input is 0 by adding leading 0
}
binary[strlen(binary) - 1] = '\0'; // Adding null terminator
printf("Binary representation: %s\n", binary);
return 0;
}
```
阅读全文