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