Reverse a Number using Loops in C
To reverse a number in C using loops, we repeatedly extract the last digit using the modulus operator (%
), add it to the reversed number, and remove the last digit using division (/
). This process continues until all digits are processed. Below, we will explore different ways to reverse a number using loops.
Examples to Reverse a Number
1. Reverse a Number Using a while
Loop
In this example, we will take an integer as input and reverse it using a while
loop. The last digit is extracted and added to the reversed number iteratively.
main.c
#include <stdio.h>
int main() {
int num, reversed = 0, remainder;
// Input from user
printf("Enter a number: ");
scanf("%d", &num);
// Reverse the number using while loop
while (num != 0) {
remainder = num % 10; // Extract last digit
reversed = reversed * 10 + remainder; // Build reversed number
num /= 10; // Remove last digit
}
printf("Reversed Number: %d\n", reversed);
return 0;
}
Explanation:
num
: Stores the original number input by the user.reversed
: Stores the reversed number, initially set to0
.remainder
: Extracts the last digit usingnum % 10
.- Each extracted digit is added to
reversed
after multiplying it by10
. num /= 10
removes the last digit after processing it.- The loop continues until all digits are processed.
Output:
Enter a number: 1234
Reversed Number: 4321
2. Reverse a Number Using a for
Loop
We can achieve the same result using a for
loop. The loop iterates as long as the number is not zero, extracting and reversing digits one by one.
main.c
#include <stdio.h>
int main() {
int num, reversed = 0, remainder;
// Input from user
printf("Enter a number: ");
scanf("%d", &num);
// Reverse the number using for loop
for (; num != 0; num /= 10) {
remainder = num % 10;
reversed = reversed * 10 + remainder;
}
printf("Reversed Number: %d\n", reversed);
return 0;
}
Explanation:
- Similar to the
while
loop example, we declarenum
,reversed
, andremainder
. - The
for
loop does not require an explicit initialization sincenum
is already set. - Each iteration extracts the last digit and appends it to
reversed
. - The number is reduced by dividing it by
10
in the loop condition.
Output:
Enter a number: 9876
Reversed Number: 6789
3. Reverse a Number Using Recursion
Instead of using loops, we can also use recursion to reverse a number. This approach involves calling a function repeatedly to extract digits and construct the reversed number.
main.c
#include <stdio.h>
int reverseNumber(int num, int reversed) {
if (num == 0)
return reversed;
return reverseNumber(num / 10, reversed * 10 + num % 10);
}
int main() {
int num;
// Input from user
printf("Enter a number: ");
scanf("%d", &num);
// Call the recursive function
printf("Reversed Number: %d\n", reverseNumber(num, 0));
return 0;
}
Explanation:
- The function
reverseNumber()
takes two parameters: the number and the reversed number. - The base case is when
num
becomes 0, returning the reversed number. - Otherwise, we extract the last digit and append it to
reversed
usingreversed * 10 + num % 10
. - The function is called recursively with
num / 10
until all digits are processed.
Output:
Enter a number: 456
Reversed Number: 654
Conclusion
In this tutorial, we learned different ways to reverse a number in C:
while
Loop: Extracts and appends digits iteratively.for
Loop: Achieves the same result with a compact loop structure.- Recursion: Calls a function repeatedly to reverse digits.