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

</>
Copy
#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:

  1. num: Stores the original number input by the user.
  2. reversed: Stores the reversed number, initially set to 0.
  3. remainder: Extracts the last digit using num % 10.
  4. Each extracted digit is added to reversed after multiplying it by 10.
  5. num /= 10 removes the last digit after processing it.
  6. 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

</>
Copy
#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:

  1. Similar to the while loop example, we declare num, reversed, and remainder.
  2. The for loop does not require an explicit initialization since num is already set.
  3. Each iteration extracts the last digit and appends it to reversed.
  4. 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

</>
Copy
#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:

  1. The function reverseNumber() takes two parameters: the number and the reversed number.
  2. The base case is when num becomes 0, returning the reversed number.
  3. Otherwise, we extract the last digit and append it to reversed using reversed * 10 + num % 10.
  4. 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:

  1. while Loop: Extracts and appends digits iteratively.
  2. for Loop: Achieves the same result with a compact loop structure.
  3. Recursion: Calls a function repeatedly to reverse digits.