About Me

My photo
Raipur, Chhattisgarh, India
Hi , I am Amit Thakur. I have worked as a QA Engineer for two years and as a Java Developer for one year in NIHILENT TECHNOLOGIES PVT. LTD., Pune.Currently I am working as DEAN (Research & Development) in Bhilai Institute of Technology, Raipur.

Tuesday, September 3, 2013

C Program to Convert Decimal Number to Hexadecimal Number

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

void dec_hex(long int num)   // Function Definition
{
long int rem[50],i=0,length=0;

while(num>0)
   {
      rem[i]=num%16;
      num=num/16;
      i++;
      length++;
   }

printf("Hexadecimal number : ");
for(i=length-1;i>=0;i--)
  {
    switch(rem[i])
    {
      case 10:
          printf("A");
          break;
      case 11:
          printf("B");
          break;
      case 12:
          printf("C");
          break;
      case 13:
          printf("D");
          break;
      case 14:
          printf("E");
          break;
      case 15:
          printf("F");
          break;
      default :
         printf("%ld",rem[i]);
    }
  }
}
//================================================
void main()
{
long int num;
clrscr();

 printf("Enter the decimal number : ");
 scanf("%ld",&num);

    dec_hex(num);   // Calling function

 getch();
}
Output :
Enter the decimal number : 87274
Hexadecimal number : 154EA

Logic of This Program :

In this program firstly we need to accept decimal number from the user using following statement -
printf("Enter the decimal number : ");
scanf("%ld",&num);
Now after accepting the number we are calling the function which can evaluate equivalent hexadecimal number.
dec_hex(num);   // Calling function
Inside the function we have declared 3 variables. Below table will explain the significance of each and every variable used inside the function.
VariableSignificance of the Variable
numThis variable is used to store the actual decimal number. We are dividing this variable for finding the remainder and quotient.
rem[50]It is remainder array which is used to store the reminder when we divide the number by 16.
iUsed as subscript variable for remainder array i.e rem
lengthIt is used to keep track of the size of a reminder array.
Now perform below steps until the number becomes less than 0 -
  1. Divide the number with 16 and store reminder in an array
  2. Divide the number with 16 and store quotient in num variable
  3. Increment i and length
while(num > 0)
   {
      rem[i] = num % 16;
      num = num / 16;
      i++;
      length++;
   }
After coming out of the loop. We need to print reminder in reverse fashion. Now consider the following table in order to print array -
RemainderDisplay this
10A
11B
12C
13D
14E
15F
In order to print reminders greater than 10 , refer above table. This can be done with switch case.
case 10:
      printf("A");
      break;
case 11:
      printf("B");
      break;

No comments: