Reversing a Number In C



Lets first understand what we mean by reversing a number. Reversing a number like 1234 is 4321. This program should give us insight of while loop. We shall also learn how to get the last digit of a number.

To get the last digit of a number (an integer) we use modulo 10. In C, Modulo operation is uses symbol (%). Here is how it works −

  • To get last 1 digit of 1234 use modulo 10, (1234 % 10 = 4)

  • To get last 2 digits of 1234 use modulo 100, (1234 % 100 = 34)

  • To get last 3 digits of 1234 use modulo 1000, (1234 % 1000 = 234)

... and so on. Lets now have a look at the algorithm to reverse a string −

START

   Value, Reverse, Temp
   
   Reverse ← 0
   
   WHILE Value is greater than 0
   
      Step 1 → Extract last digit from value
               Temp ← Value % 10

      Step 2 → Add extracted digit to Reverse
               Reverse ← Reverse + Temp

      Step 3 → Remove last digit from value
               Value ← Value / 10

      Step 4 → Add 0 at the end of Reverse (if not yet reversed)
               Reverse ← Reverse * 10
               
   END WHILE
   
STOP

We observe that Step 4 is a bit tricky. If the number is already reversed Step 4 will add additional zero. In implementation, we place it at the beginning of the loop −

#include <stdio.h>

int main()
{
   int value = 1234;
   int reverse = 0;
   int temp = 0;
   
   printf("Value   = %d\n", value);
   
   while (value > 0)
   {
      // multiplication with 10, adds a 0 at the end to accommodate new digit
       reverse = reverse * 10;
       
       // Extracts last digit of value
       temp = value % 10;
       
       // Removes last digit from value
       value = value / 10;
       
       // Adds extracted digit to reverse
       reverse = reverse + temp;
   }
   
   printf("Reverse = %d\n", reverse);
}

Output of the program should be −

Value   = 1234
Reverse = 4321
Advertisements