0
0
CppProgramBeginner · 2 min read

C++ Program to Reverse a Number with Output and Explanation

To reverse a number in C++, use a loop to extract digits with % 10 and build the reversed number by multiplying the result by 10 and adding the digit. For example: while (num != 0) { reversed = reversed * 10 + num % 10; num /= 10; }.
📋

Examples

Input1234
Output4321
Input1000
Output1
Input0
Output0
🧠

How to Think About It

To reverse a number, think of peeling off the last digit repeatedly using % 10. Then add that digit to a new number that grows by shifting digits left (multiply by 10). Repeat until the original number is zero.
📐

Algorithm

1
Get the input number.
2
Initialize reversed number to 0.
3
While the input number is not zero:
4
Extract the last digit using modulo 10.
5
Add this digit to reversed number after shifting reversed number by one digit (multiply by 10).
6
Remove the last digit from the input number by dividing by 10.
7
Return or print the reversed number.
💻

Code

cpp
#include <iostream>
using namespace std;

int main() {
    int num, reversed = 0;
    cout << "Enter a number: ";
    cin >> num;
    int original = num;
    while (num != 0) {
        int digit = num % 10;
        reversed = reversed * 10 + digit;
        num /= 10;
    }
    cout << "Reversed number of " << original << " is " << reversed << endl;
    return 0;
}
Output
Enter a number: 1234 Reversed number of 1234 is 4321
🔍

Dry Run

Let's trace the number 1234 through the code to see how it reverses.

1

Initial values

num = 1234, reversed = 0

2

First iteration

digit = 1234 % 10 = 4; reversed = 0 * 10 + 4 = 4; num = 1234 / 10 = 123

3

Second iteration

digit = 123 % 10 = 3; reversed = 4 * 10 + 3 = 43; num = 123 / 10 = 12

4

Third iteration

digit = 12 % 10 = 2; reversed = 43 * 10 + 2 = 432; num = 12 / 10 = 1

5

Fourth iteration

digit = 1 % 10 = 1; reversed = 432 * 10 + 1 = 4321; num = 1 / 10 = 0

6

Loop ends

num is 0, loop stops; reversed = 4321

numdigitreversed
123444
123343
122432
114321
💡

Why This Works

Step 1: Extract last digit

Using num % 10 gets the last digit of the number, like peeling one digit off.

Step 2: Build reversed number

Multiply the current reversed number by 10 to shift digits left, then add the extracted digit.

Step 3: Remove last digit

Divide the original number by 10 to remove the last digit and prepare for the next loop iteration.

🔄

Alternative Approaches

String conversion
cpp
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main() {
    string num;
    cout << "Enter a number: ";
    cin >> num;
    reverse(num.begin(), num.end());
    cout << "Reversed number is " << num << endl;
    return 0;
}
This method converts the number to a string and reverses it, which is simpler but uses extra memory for the string.
Recursive approach
cpp
#include <iostream>
using namespace std;

void reverseNumber(int num) {
    if (num == 0) return;
    cout << num % 10;
    reverseNumber(num / 10);
}

int main() {
    int num;
    cout << "Enter a number: ";
    cin >> num;
    cout << "Reversed number is ";
    if (num == 0) cout << 0;
    else reverseNumber(num);
    cout << endl;
    return 0;
}
This uses recursion to print digits in reverse order without storing the reversed number.

Complexity: O(d) time, O(1) space

Time Complexity

The loop runs once for each digit in the number, so time grows linearly with the number of digits, O(d).

Space Complexity

Only a few integer variables are used, so space is constant, O(1).

Which Approach is Fastest?

The arithmetic loop method is fastest and uses least memory. String conversion is simpler but uses extra space. Recursion adds call stack overhead.

ApproachTimeSpaceBest For
Arithmetic loopO(d)O(1)Efficient and memory-friendly
String conversionO(d)O(d)Simple code, uses extra memory
Recursive printingO(d)O(d)No extra storage but uses call stack
💡
Always initialize your reversed number to zero before starting the loop.
⚠️
Forgetting to update the original number inside the loop causes an infinite loop.