C Program to Convert Decimal to Octal using Recursion and Loop

In this tutorial, we will write a program to convert decimal to octal in C. Before that, you must have knowledge of the following topics in C.

Octal number

The octal numbers are the numbers with base 8 and use the digits 0 to 7. Example: 8 in decimal is represented as 10 in octal, 25 as 31, and so on.

Decimal Number

These are the numbers with a base of 10, which ranges from 0 to 9. These numbers are formed with the combination of 0 to 9 digits such as 24, 345, etc.

Example:

Input: 256
Output: 400

Let us go through a program for the Decimal to Octal Conversion in C.


1. Using While loop

Here, we will write a C program to convert decimal number to octal number using while loop. The program simply takes a decimal number as an input from the user and after calculation gives an octal output.

#include <stdio.h>

int main()
{
  int deciNum, octalNum = 0, rem, i = 1;

  printf("Enter a Decimal number: ");
  scanf("%d", &deciNum);

  while (deciNum != 0)
  {
    rem = deciNum % 8;
    octalNum = (rem *i) + octalNum;
    deciNum /= 8;

    i *= 10;
  }

  printf("Equivalent Octal Value: %d", octalNum);

  return 0;
}

Output:

Enter a Decimal number: 256
Equivalent Octal Value: 400


2. Using Recursion

Here, we will convert a decimal number to octal number using recursion in C. Learn more on Recursion and its use.

#include <stdio.h>

void conversionFunc(int); //prototype

int main()
{
  int deciNum;

  printf("Enter a Decimal number: ");
  scanf("%d", &deciNum);

  printf("Equivalent Octal Value: ");
  conversionFunc(deciNum);

  return 0;
}

//recursive function
void conversionFunc(int dec)
{
  if (dec > 0)
  {
    conversionFunc(dec / 8);
    printf("%d", dec % 8);
  }
}

Output: After the successful execution of the program, it will produce the same out as the above program.