0
0
CsharpProgramBeginner · 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 the remainder operator %. Then, add that digit to a new number that grows by shifting digits left (multiplying by 10). Repeat until the original number is gone.
📐

Algorithm

1
Get input number.
2
Initialize reversed number to 0.
3
While the input number is greater than 0:
4
Extract the last digit using remainder <code>% 10</code>.
5
Add this digit to reversed number after shifting reversed number left by one digit (multiply by 10).
6
Remove the last digit from input number by dividing by 10.
7
Return the reversed number.
💻

Code

csharp
using System;
class Program {
    static void Main() {
        int num = 1234, reversed = 0;
        while (num > 0) {
            int digit = num % 10;
            reversed = reversed * 10 + digit;
            num /= 10;
        }
        Console.WriteLine(reversed);
    }
}
Output
4321
🔍

Dry Run

Let's trace reversing 1234 through the code

1

Initial values

num = 1234, reversed = 0

2

First loop iteration

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

3

Second loop iteration

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

4

Third loop iteration

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

5

Fourth loop iteration

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

6

Loop ends

num = 0, 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 using integer division to remove the last digit and repeat.

🔄

Alternative Approaches

Convert to string and reverse
csharp
using System;
class Program {
    static void Main() {
        int num = 1234;
        char[] arr = num.ToString().ToCharArray();
        Array.Reverse(arr);
        int reversed = int.Parse(new string(arr));
        Console.WriteLine(reversed);
    }
}
This method is simpler but uses extra memory for string conversion and is slower for very large numbers.
Recursive reversal
csharp
using System;
class Program {
    static int Reverse(int num, int rev = 0) {
        if (num == 0) return rev;
        return Reverse(num / 10, rev * 10 + num % 10);
    }
    static void Main() {
        int num = 1234;
        Console.WriteLine(Reverse(num));
    }
}
Uses recursion to reverse the number, elegant but may cause stack overflow for very large inputs.

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.

Space Complexity

Only a few integer variables are used, so space is constant regardless of input size.

Which Approach is Fastest?

The arithmetic loop method is fastest and uses least memory compared to string conversion or recursion.

ApproachTimeSpaceBest For
Arithmetic loopO(d)O(1)Fastest and memory efficient
String conversionO(d)O(d)Simple code, less efficient for large numbers
RecursiveO(d)O(d)Elegant but risks stack overflow
💡
Use integer division and remainder operators to peel digits one by one when reversing numbers.
⚠️
Forgetting to multiply the reversed number by 10 before adding the new digit causes incorrect results.