C Program to convert a decimal number to binary, octal and hexadecimal using recursion
Last updated on September 24, 2020
The following is a C program to convert a decimal number to binary, octal and hexadecimal using recursion:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | /**********************************************************
Program to convert a decimal number to binary,
octal and hexadecimal using recursion
*
* Select conversion:
* 1. Decimal to binary.
* 2. Decimal to octal.
* 3. Decimal to hexadecimal.
* 4. Exit.
* Enter your choice: 1
* Enter a number: 4
* Result = 100
**********************************************************/
#include<stdio.h> // include stdio.h library
void convert_to_x_base(int, int);
int main(void)
{
int num, choice, base;
while(1)
{
printf("Select conversion: \n\n");
printf("1. Decimal to binary. \n");
printf("2. Decimal to octal. \n");
printf("3. Decimal to hexadecimal. \n");
printf("4. Exit. \n");
printf("\nEnter your choice: ");
scanf("%d", &choice);
switch(choice)
{
case 1:
base = 2;
break;
case 2:
base = 8;
break;
case 3:
base = 16;
break;
case 4:
printf("Exiting ...");
exit(1);
default:
printf("Invalid choice.\n\n");
continue;
}
printf("Enter a number: ");
scanf("%d", &num);
printf("Result = ");
convert_to_x_base(num, base);
printf("\n\n");
}
return 0; // return 0 to operating system
}
void convert_to_x_base(int num, int base)
{
int rem;
// base condition
if (num == 0)
{
return;
}
else
{
rem = num % base; // get the rightmost digit
convert_to_x_base(num/base, base); // recursive call
if(base == 16 && rem >= 10)
{
printf("%c", rem+55);
}
else
{
printf("%d", rem);
}
}
}
|
Expected Output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | Select conversion:
1. Decimal to binary.
2. Decimal to octal.
3. Decimal to hexadecimal.
4. Exit.
Enter your choice: 1
Enter a number: 7
Result = 111
Select conversion:
1. Decimal to binary.
2. Decimal to octal.
3. Decimal to hexadecimal.
4. Exit.
Enter your choice: 2
Enter a number: 25
Result = 31
Select conversion:
1. Decimal to binary.
2. Decimal to octal.
3. Decimal to hexadecimal.
4. Exit.
Enter your choice: 4
Exiting ...
|
How it works #
The following figure shows how the evaluation of convert_to_x_base(4, 2)
takes place:
Recommended Reading:
- C Program to convert a decimal number to a binary number
- C Program to convert a decimal number to an octal number
- C Program to convert a decimal number to a hexadecimal number
- Recursive Function in C
- C Program to calculate Factorial using recursion
Load Comments