# C Program to Reverse Digits of a Number

Here is a C program to reverse the digits of a number. This program first take an integer as input form user, then reverse it's digits using modulus(%), division(/) and multiplication(*) operator inside loop. After reversing it prints the reversed number.

Inside loop, we first get the least significant digit(right most digit) of number using (number % 10) then append it at the end of reverse number. Finally we remove right most digits from number in number = number/10 statement.

## C program to reverse digit of a number using loop

Algorithm to reverse digits of a number
• Get the least significant digit(right most digit) of the number.
rightDigit = number%10;
• Append it at the end of reverse number.
reverse = (reverse * 10) + rightDigit;
• Remove right most digit from number.
number = number/10;
• Repeat this process till number is greater than zero.
This program used while loop, we can similarly use for loop.
```#include <stdio.h>

int main(){
int number, reverse = 0, rightDigit;
printf("Enter a number \n");
scanf("%d", &number);
while(number != 0){
rightDigit = number % 10;
reverse = (reverse * 10) + rightDigit;
number = number/10;
}
printf("Reversed number : %d\n", reverse);

return 0;
}
```
Output
```Enter a number : 12345
Reversed number : 543211
```

## C program to reverse digits of a number using recursion

We can use recursion to reverse the digits if a number because it follows recursive sub-problem property.

```getReversedNumber(1234) = (4*1000) + getReversedNumber(123)
```

This program uses a function getReversedNumber which takes a number as input and returns reversed number.

Recursive algorithm to reverse a number
• N%10 returns the least significant digit of N(354%10 = 4).
• N/10 return the number after removing least significant digit of N(2345/10 = 234).
• log10(N) + 1 returns the number of digits in N. log10(N) is logarithm of N with base 10(log10(2311) + = 4).
• Let getReversedNumber(N) is a function, which returns reverse of N. Then, we can use recursion to reverse the digits if a number using below mention recursive equation.
• getReversedNumber(N) = (N%10)X pow(10, (log10(N/10) + 1)) + getReversedNumber(N/10)
```#include <stdio.h>
#include <math.h>

int getReversedNumber(int number);
int main(){
int number, reverse = 0;
printf("Enter a number :");
scanf("%d", &number);

reverse = getReversedNumber(number);

printf("Reversed number : %d\n", reverse);
getch();
return 0;
}

int getReversedNumber(int number){
int lastDigit, numberOfDigits, sign = 1;

if(number < 0){
number = number * -1;
sign = -1;
}
if(number < 10)
return number*sign;

lastDigit = number % 10;
number = number / 10;
numberOfDigits = log10(number) + 1;

return (lastDigit*pow(10,numberOfDigits)
+ getReversedNumber(number)) * sign;
}
```
Output
```Enter a number : 23148
Reversed number : 84132
```

Related Topics
 C program to reverse a string C program to add digits of a number C program to check a number is palindrome or not C program to check string is palindrome C program to check armstrong number C Program to calculate factorial of a number C program to find hcf and lcm of two numbers List of all C programs