C语言写个程序利用递归法将十进制转化为二进制
时间: 2023-09-02 08:14:21 浏览: 63
好的,以下是C语言递归方法将十进制转换为二进制的程序:
```c
#include <stdio.h>
void decimalToBinary(int decimalNumber)
{
int remainder;
if (decimalNumber <= 1)
{
printf("%d", decimalNumber);
return;
}
remainder = decimalNumber % 2;
decimalToBinary(decimalNumber >> 1);
printf("%d", remainder);
}
int main()
{
int decimalNumber;
printf("请输入一个十进制数: ");
scanf("%d", &decimalNumber);
printf("二进制数为:");
decimalToBinary(decimalNumber);
return 0;
}
```
在这个程序中,函数`decimalToBinary`是一个递归函数,它将十进制数转化为二进制数。这个函数首先判断输入的十进制数是否小于等于1,在这种情况下直接输出该数字即可。如果数字大于1,则用其与2的余数和其除以2的结果递归调用自身。最后,输出结果即可。
请注意,递归可能会导致栈溢出,因此请确保递归次数不会太多。
相关问题
C语言用iostream头文件中递归函数写代码十进制转化为二进制
在 C 语言中并没有 `iostream` 头文件,它是 C++ 标准库中的头文件。如果您想使用 C++ 的递归函数来实现十进制转二进制,可以使用以下代码:
```cpp
#include <iostream>
using namespace std;
void decimal_to_binary(int decimal) {
if (decimal == 0) {
return;
}
decimal_to_binary(decimal / 2);
cout << decimal % 2;
}
int main() {
int decimal;
cout << "Please input a decimal number: ";
cin >> decimal;
cout << "The binary representation of " << decimal << " is: ";
decimal_to_binary(decimal);
cout << endl;
return 0;
}
```
以上代码中,`decimal_to_binary` 函数通过递归的方式将一个十进制数转化为二进制。具体实现是每次将十进制数除以 2,直到十进制数为 0,然后从最后一个余数开始输出,即可得到二进制表示。在 `main` 函数中,先读入一个十进制数,然后调用 `decimal_to_binary` 函数转化为二进制,并输出结果。
c语言用递归方法将十进制转化成十六进制
好的,您的问题是如何使用递归方法将十进制数转化为十六进制数。
以下是C语言中的递归函数实现:
```c
void decToHex(int num) {
if (num >= 16) {
decToHex(num / 16);
}
int remainder = num % 16;
if (remainder < 10) {
printf("%d", remainder);
} else {
printf("%c", remainder - 10 + 'A');
}
}
```
该函数从最高位开始递归,直到num小于16,最后输出十六进制数的各个位数。递归调用自身,每次传递num除以16的结果作为参数,直到num小于16。然后计算num除以16的余数,如果余数小于10,则输出余数;如果余数大于等于10,则输出对应的十六进制字母字符。