- C Programming Examples
- C Programming Examples
- C Print Hello World
- C Get Input from User
- C Print Integer
- C Add Two Numbers
- C Add Subtract Multiply Divide
- C Add n Numbers
- C Area Perimeter of Square
- C Area Perimeter of Rectangle
- C Area Circum of Circle
- C Fahrenheit to Celsius
- C Celsius to Fahrenheit
- C Inches to Centimeters
- C Kilogram to Gram
- C Reverse a Number
- C Swap Two Numbers
- C Interchange Numbers
- C Print ASCII Value
- C Print Fibonacci Series
- C Check Palindrome or Not
- C Check Armstrong or Not
- C Find Armstrong Numbers
- C Find nCr and nPr
- C Find Profit Loss
- C Sum of their Square
- C First & Last Digit Sum
- C Sum of All Digit
- C Product of All Digit
- C Print Total Digit in Number
- C Check Perfect Number
- C Find Basic Gross Salary
- C Round Number to Integer
- C Print Series upto n Term
- C Find Factors of Number
- C if-else & Loop Programs
- C Check Even or Odd
- C Check Prime or Not
- C Check Alphabet or Not
- C Check Vowel or Not
- C Check Leap Year or Not
- C Is Reverse Equal Original
- C Make Calculator
- C Add Digits of Number
- Count Positive Negative Zero
- C Largest of Two Numbers
- C Largest of Three Numbers
- C Smallest of Two Numbers
- C Smallest of Three Numbers
- C Find Factorial of Number
- C Find LCM & HCF
- C Find LCM of n Numbers
- C Find HCF of n Numbers
- C Find Arithmetic Mean
- C Find Average, Percentage
- C Find Student Grade
- C Print Table of Number
- C Print Prime Numbers
- C Find Discount Purchase
- C Calculate Parcel Charge
- C Calculate Wage of Labor
- C Print Phone Bill
- C Conversion programs
- C Decimal to Binary
- C Decimal to Octal
- C Decimal to Hexadecimal
- C Binary to Decimal
- C Binary to Octal
- C Binary to Hexadecimal
- C Octal to Decimal
- C Octal to Binary
- C Octal to Hexadecimal
- C Hexadecimal to Decimal
- C Hexadecimal to Binary
- C Hexadecimal to Octal
- C Pattern Programs
- C Pattern Printing Programs
- C Print Diamond Pattern
- C Print Floyd's Triangle
- C Print Pascal's Triangle
- C Array Programs
- C 1D Array Programs
- C Linear Search
- C Binary Search
- C Largest Element in Array
- C Smallest Element in Array
- C Second Largest/Smallest
- C Count Even Odd
- C Array Element at Even
- C Array Element at Odd
- C Print Even Array Elements
- C Print Odd Array Elements
- C Sum/Product of Even/Odd
- C Reverse an Array
- C Insert Element in Array
- C Delete Element from Array
- C Merge Two Arrays
- C Bubble Sort
- C Selection Sort
- C Insertion Sort
- C Print Common Elements
- C 2D Array Programs
- C Add Two Matrices
- C Subtract Two Matrices
- C Transpose a Matrix
- C Multiply Two Matrices
- C Sum All Matrix Elements
- C Largest Element in Matrix
- C Print Row Column Total
- C 3D Array Programs
- C String Programs
- C Print String
- C Find Length of String
- C Compare Two String
- C Copy a String
- C Concatenate String
- C Reverse a String
- C Count Vowels Consonants
- C Replace Vowel in String
- C Delete Vowels from String
- C Delete Word from String
- C Frequency of Character
- C Count Word in String
- C Remove Spaces from String
- C Sort a String
- C Sort String in Alphabetical
- C Sort Words in Ascending
- C Sort Words in Descending
- C Uppercase to Lowercase
- C Lowercase to Uppercase
- C Swap Two Strings
- C Check Anagram or Not
- C Check Palindrome String
- C Print Number in Words
- C Print Successive Character
- C Character without Space
- C Remove Extra Spaces
- C File Programs
- C Read a File
- C Write Content to File
- C Read & Display File
- C Copy a File
- C Merge Two Files
- C Reverse File
- C Count All Character in File
- C List Files in Directory
- C Encrypt & Decrypt a File
- C Delete a File
- C Misc Programs
- Generate Random Numbers
- C Print Date Time
- C Print Message with Time
- C Get IP Address
- C Print Smiling face
- C Pass Array to Function
- Add Two Numbers using Pointer
- C Address of Variable
- C Shutdown Computer
- C Programming Tutorial
- C Tutorial
- C Programming Library
- C Standard Library
- C Programming Test
- C Programming Test
- Give Online Test
- All Test List

# C Program to Convert Binary to Octal

In this tutorial, we will learn about how to create a program in C that can convert any given binary number (by user at run-time) into
its equivalent octal number. At last we have also created a function named **BinToOct()** that does
the same job.

But before going through the program, if you are not aware of

- Binary Number
- Octal Number
- Binary to Octal Conversion

then refer to Binary to Octal conversion step by step process. Now let's move on to the program.

## Binary to Octal in C

The question is, **Write a program in C that converts any given binary number into its equivalent octal value**. The answer to this question is:

#include<stdio.h> #include<conio.h> int main() { int bin, oct=0, i=0, mul=1, count=1, rem, octnum[20]; printf("Enter any Binary Number: "); scanf("%d", &bin); while(bin!=0) { rem = bin%10; oct = oct + (rem*mul); if(count%3==0) { octnum[i] = oct; mul = 1; oct = 0; count = 1; i++; } else { mul = mul*2; count++; } bin = bin/10; } if(count!=1) octnum[i] = oct; printf("\nEquivalent Octal Value = "); for(i=i; i>=0; i--) printf("%d", octnum[i]); getch(); return 0; }

As the above program was written under **Code::Blocks** IDE, therefore after successful build and run, here is the first snapshot
of the sample run:

Now supply any binary number say **1101110** as input and press ENTER key to see its equivalent octal value as shown in the
second snapshot of the sample run given below:

Here is the final snapshot of another sample run:

#### Program Explained

- Receive any binary number from user at run-time say
**1101110** - Create a while loop that runs until the value of binary number (
**bin**) becomes 0 - At first run,
**bin**(1101110) is not equal 0, therefore program flow goes inside the loop - And
**bin%10**or**1101110%10**or**0**gets initialized to**rem**,**oct + (rem*mul)**(we have initialized 0 to**oct**and 1 to**mul**at start of the program) or**0 + (0*1)**or**0**gets initialized to**oct** - We have initialized 1 to
**count**at start of the program, therefore at first run, the value of**count**is not equal to 3, therefore while dividing the value of**count**or**1**with 3, we will not get a remainder as 0, therefore program flow goes inside the else block (as the condition of if statement evaluates to be false at first run of**while**loop), and inside the**else**block,**mul*2**or**1*2**or**2**gets initialized to**mul**, and the value of**count**gets incremented and becomes 2 - At last,
**bin/10**or**1101110/10**or**110111**gets initialized to**bin**, and again program flow goes back to the**while**loop's condition - Therefore,
**bin!=0**or**110111!=0**evaluates to be true, therefore program flow again goes inside the loop - And
**bin%10**or**110111%10**or**1**gets initialized to**rem**, and**oct + (rem*mul)**or**0 + (1*2)**or**2**gets initialized to**oct** - Again the condition of
**if**statement, that is**count%3==0**or**2%3==0**evaluates to be false, therefore program flow goes inside the**else**block, and**mul*2**or**2*2**or**4**gets initialized to**mul**, and the value of**count**gets incremented and becomes 3 - At last,
**bin/10**or**110111/10**or**11011**gets initialized to**bin**, and again program flow goes back to the loop's condition - Therefore,
**bin!=0**or**11011!=0**evaluates to be true, therefore program flow again goes inside the loop - And
**bin%10**or**11011%10**or**1**gets initialized to**rem**, and**oct + (rem*mul)**or**2 + (1*4)**or**6**gets initialized to**oct** - Now the condition of
**if**statement, that is**count%3==0**or**3%3==0**evaluates to be true, therefore program flow goes inside the**if**block, and**oct**or**6**gets initialized to**octnum[i]**(we have initialized 0 to**i**at start of the program) or**octnum[0]**, and 1, 0, 1 gets initialized to**mul**,**oct**,**count**respectively. And the value of**i**gets incremented and becomes 1 - At last,
**bin/10**or**11011/10**or**1101**gets initialized to**bin**, and again program flow goes back to the loop's condition - Therefore,
**bin!=0**or**1101!=0**evaluates to be true, therefore program flow again goes inside the loop and follow the same procedure as told above - After exiting from the
**while**loop, check whether the value of**count****is not equal to 1**or not, if it is, then the value of**oct**gets initialized to the last index of**octnum[]**array - Finally print the value of of octal digit one by one from last index to first index

### Binary to Octal in C using User-defined Function

The question is, **Write a program in C that converts Binary to Octal using user-defined function named BinToOct()**.
Here we have declared the variable **i** and the array **octnum[20]** as global variable (out from both the function) to make it
known inside both the function that is **main()** and **BinToOct()** function.

#include<stdio.h> #include<conio.h> void BinToOct(int bin); int i=0; int octnum[20]; int main() { int binnum; printf("Enter any Binary Number: "); scanf("%d", &binnum); BinToOct(binnum); printf("\nEquivalent Octal Value = "); for(i=i; i>=0; i--) printf("%d", octnum[i]); getch(); return 0; } void BinToOct(int bin) { int oct=0, mul=1, count=1, rem; while(bin!=0) { rem = bin%10; oct = oct + (rem*mul); if(count%3==0) { octnum[i] = oct; mul = 1; oct = 0; count = 1; i++; } else { mul = mul*2; count++; } bin = bin/10; } if(count!=1) octnum[i] = oct; }

Here is the final snapshot of above program's sample run:

#### Same Program in Other Languages

« Previous Program Next Program »