w3resource

C Exercises: Convert binary number to octal

C For Loop: Exercise-53 with Solution

Write a C program to convert a binary number to octal.

Pictorial Presentation:

Convert binary number to octal

Sample Solution:

C Code:

#include <stdio.h>
#include <math.h>

void main()
{       int n1, n,p=1;
	int dec=0,i=1,j,d;
        int ocno=0,dn;


     printf("\n\nConvert Binary to Octal:\n ");
     printf("-------------------------\n");

	printf("Input a binary number :");
	scanf("%d",&n);
	n1=n;
	for (j=n;j>0;j=j/10)
	{  
          d = j % 10;
            if(i==1)
                  p=p*1;
            else
                 p=p*2;

	   dec=dec+(d*p);
	   i++;
	}
 
/*--------------------------------------------*/
     dn=dec;
     i=1;

      for(j=dec;j>0;j=j/8)
       {
        ocno=ocno+(j % 8)*i;
        i=i*10;
        n=n/8;
       }
   
        printf("\nThe Binary Number : %d\nThe equivalent Octal  Number : %d \n\n",n1,ocno);
}

Sample Output:

Convert Binary to Octal:                                                                                      
 -------------------------                                                                                    
Input a binary number :1001                                                                                   
                                                                                                              
The Binary Number : 1001                                                                                      
The equivalent Octal  Number : 11 

Flowchart :

Flowchart : Convert binary number into octal

C Programming Code Editor:

Improve this sample solution and post your code through Disqus.

Previous: Write a program in c to find the Sum of GP series.
Next: Write a program in C to convert an octal number into binary.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.

C Programming: Tips of the Day

Returning an array using C

You can't return arrays from functions in C. You also can't (shouldn't) do this:

char *returnArray(char array []){
 char returned [10];
 //methods to pull values from array, interpret them, and then create new array
 return &(returned[0]); //is this correct?
} 

returned is created with automatic storage duration and references to it will become invalid once it leaves its declaring scope, i.e., when the function returns.

You will need to dynamically allocate the memory inside of the function or fill a preallocated buffer provided by the caller.

Dynamically allocate the memory inside of the function (caller responsible for deallocating ret)

char *foo(int count) {
    char *ret = malloc(count);
    if(!ret)
        return NULL;

    for(int i = 0; i < count; ++i) 
        ret[i] = i;

    return ret;
}

Call it like so:

int main() {
    char *p = foo(10);
    if(p) {
        // do stuff with p
        free(p);
    }

    return 0;
}

Ref : https://bit.ly/3yFIeao





We are closing our Disqus commenting system for some maintenanace issues. You may write to us at reach[at]yahoo[dot]com or visit us at Facebook