C Program to convert a decimal number to an octal number
Last updated on September 24, 2020
The following is a C program to convert a decimal number to an octal number:
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 | /*******************************************************
Program to convert a decimal number to an octal number
******************************************************/
#include<stdio.h> // include stdio.h library
#include<math.h> // include math.h library
int main(void)
{
long long num, oct = 0;
int i = 0, rem;
printf("Enter a decimal number: ");
scanf("%lld", &num);
while(num != 0)
{
rem = num % 8; // get the last digit
oct = rem * (long long)pow(10, i++) + oct;
num /= 8; // get the quotient
}
printf("0o");
printf("%lld", oct);
return 0; // return 0 to operating system
}
|
Expected Output: 1st run:
1 2 | Enter a decimal number: 74
0o112
|
2nd run:
1 2 | Enter a decimal number: 2545
0o4761
|
How it works #
To convert a decimal number to an octal number, we follow these steps:
Step 1: Divide the decimal number continuously by 8 and write the remainder on the right-hand side of the dividend. We repeat this process until we get the quotient 0.
Step 2: Write the remainders from bottom to top.
Let's take some examples:
Example 1: Convert decimal 125
to an octal number:
Step 1:
Quotient | Remainder | |
---|---|---|
125/8 |
15 |
5 |
15/8 |
1 |
7 |
1/2 |
0 |
1 |
Step 2:
\(\mathtt{125_{10} = 175_{8}}\)
Example 2: Convert decimal 500
to an octal number:
Step 1:
Quotient | Remainder | |
---|---|---|
500/8 |
62 |
4 |
62/8 |
7 |
6 |
1/2 |
0 |
7 |
Step 2:
\(\mathtt{500_{10} = 764_{8}}\)
The following table shows what happens at each iteration of the loop (assuming num = 74
):
Iteration | rem | bin | num | i |
---|---|---|---|---|
After 1st iteration | rem=74%8=2 |
oct=2*(10^0)+0=2 |
num=74/8=9 |
i=2 |
After 2nd iteration | rem=9%8=1 |
oct=1*(10^1)+2=12 |
num=9/8=1 |
i=3 |
After 3rd iteration | rem=1%8=1 |
oct=1*(10^2)+12=112 |
num=1/8=0 |
i=4 |
Recommended Reading
- C Program to convert a decimal number to a hexadecimal number
- C Program to convert a decimal number to a binary number
- C Program to Convert a Binary Number to a Decimal Number
- C Program to multiply two numbers using Russian peasant method
- C Program to check whether the number is a Palindrome
Load Comments