Print reverse of given number

Program

#include<stdio.h>
main()
{
  int dummy,n,rev=0,x;
  printf("Enter a number\n");
  scanf("%d",&n);
  dummy=n;
  while(n>0)
  {
    x=n%10;
    rev=rev*10+x;
    n=n/10;
  }
  printf("The reverse of given number %d is %d\n",dummy,rev);
}

Output:

Enter a number
234
The reverse of given number 234 is 432

Explanation:
  1. Here we did initialization for
    • dummy----->To store the entered value(i.e 'n') as you will come to know at the end of the program
    • n----------->To store number given by user.
    • rev----->To store the reverse of a number.It is initialized to zero
    • x---------->To store n%10.
  2. First of all we got a number 'n' from user and then stored it in a dummy variable called as 'dummy' for restoring the value.(remember this point).
  3. Now the main logic comes here:-
    • let the number 'n' be 321 and as 321>0,while loop gets executed
      1. then x=321%10--->which is 1.
      2. rev=0*10+1-------->1
      3. n=321/10--------->32
      4. The rev for the first loop execution is rev=1.
    • Now the number 'n' has become '32' and n>0,while loop executes for 2nd time
      1. then x=32%10--->which is 2.
      2. rev=1*10+2-------->12
      3. n=32/10--------->3
      4. The rev when loop executed second time is rev=12.
    • Now the number 'n' has become '3' and n>0,while loop executes for 3rd time
      1. then x=3%10--->which is 3.
      2. rev=12*10+3-------->123
      3. n=3/10--------->0
      4. The rev when loop executed third time is rev=123.
    • Now as the number in variable 'n' is 0 which is not n>0 then the loop terminates.Then the final reverse is '123'.
  4. So now I hope you understood why the dummy variable is used.It is because the value in 'n' becomes 0 at the end of the program so for restoring this value to print at the end we used 'dummy'(as from the 2nd point).
  5. Finally it prints the value in 'rev'.

Comments