c语言递归十进制转换二进制
时间: 2023-07-09 19:24:02 浏览: 86
下面是使用递归实现十进制转换为二进制的C语言代码:
```c
#include <stdio.h>
void decimalToBinary(int decimalNum){
if(decimalNum == 0){
return;
}
decimalToBinary(decimalNum / 2);
printf("%d", decimalNum % 2);
}
int main(){
int decimalNum = 23;
printf("%d in binary is: ", decimalNum);
decimalToBinary(decimalNum);
printf("\n");
return 0;
}
```
在这个代码中,我们定义了一个函数 `decimalToBinary`,它接受一个参数:需要转换的十进制数 `decimalNum`。
在函数中,我们首先计算出 `decimalNum` 除以2的商和余数,然后递归调用 `decimalToBinary` 函数,并将商作为参数传入。递归调用会一直进行,直到 `decimalNum` 等于0为止。
当 `decimalToBinary` 函数递归返回时,我们输出余数。
在 `main` 函数中,我们定义了需要转换的十进制数,并调用 `decimalToBinary` 函数进行转换。最后,我们输出转换后的二进制数。
相关问题
c语言十进制转换二进制
C语言可以使用多种方法实现十进制转换为二进制,其中包括递归和循环两种方式。递归方式的代码如下:
```
#include <stdio.h>
void dec2bin(int dec) {
if(dec > 1) dec2bin(dec/2);
printf("%d", dec%2);
}
int main() {
int dec;
printf("请输入一个十进制数:");
scanf("%d", &dec);
printf("对应的二进制数为:");
dec2bin(dec);
printf("\n");
return 0;
}
```
循环方式的代码如下:
```
#include <stdio.h>
int main() {
int num;
int temp;
int i=0;
int arr[20];
printf("请输入一个十进制数:\n");
scanf("%d", &num);
do {
temp=num%2;
num=num/2;
arr[i++]=temp;
} while (num!=0);
for (int j = i-1; j>=0; j--)
printf("%d",arr[j]);
return 0;
}
```
以上两种方法都可以实现十进制转换为二进制,具体选择哪种方法取决于个人喜好和实际需求。
c语言十进制转二进制递归算法
C语言实现十进制转二进制的递归算法如下:
```c
#include <stdio.h>
void decimalToBinary(int decimal) {
if (decimal == 0) {
return;
}
decimalToBinary(decimal / 2);
printf("%d", decimal % 2);
}
int main() {
int decimal;
printf("请输入一个十进制数:");
scanf("%d", &decimal);
printf("%d的二进制表示为:", decimal);
decimalToBinary(decimal);
printf("\n");
return 0;
}
```
此递归算法的思路是不断地将十进制数除以2,直到商为0停止递归。在每一次递归中,先递归调用除以2的商,然后输出余数。递归终止条件是当十进制数等于0时,即所有位数都被转化为二进制。
首先,在`main`函数中,通过`scanf`函数获取用户输入的十进制数,保存在`decimal`变量中。
然后,调用`decimalToBinary`函数,将`decimal`作为参数传递进去。
在`decimalToBinary`函数中,首先判断`decimal`是否为0,如果是,则直接返回。否则,继续递归调用`decimalToBinary`函数,参数为`decimal`除以2的商。然后,输出`decimal`对2取余的结果,即该位的二进制数值。
最后,在`main`函数中,输出转化完成的二进制数。
例如,输入十进制数10,经过递归转换后输出的二进制数为1010。