## Write a C program to reverse digits of a number

**ITERATIVE WAY**

Algorithm:

Input: num (1) Initialize rev_num = 0 (2) Loop while num > 0 (a) Multiply rev_num by 10 and add remainder of num divide by 10 to rev_num rev_num = rev_num*10 + num%10; (b) Divide num by 10 (3) Return rev_num

Example:

num = 4562

rev_num = 0

rev_num = rev_num *10 + num%10 = 2

num = num/10 = 456

rev_num = rev_num *10 + num%10 = 20 + 6 = 26

num = num/10 = 45

rev_num = rev_num *10 + num%10 = 260 + 5 = 265

num = num/10 = 4

rev_num = rev_num *10 + num%10 = 265 + 4 = 2654

num = num/10 = 0

**Program:**

#include <stdio.h> /* Iterative function to reverse digits of num*/ int reversDigits(int num) { int rev_num = 0; while(num > 0) { rev_num = rev_num*10 + num%10; num = num/10; } return rev_num; } /*Driver program to test reversDigits*/ int main() { int num = 4562; printf("Reverse of no. is %d", reversDigits(num)); getchar(); return 0; }

**Time Complexity:** O(Log(n)) where n is the input number.

**RECURSIVE WAY**

Thanks to Raj for adding this to the original post.

#include <stdio.h>; /* Recursive function to reverse digits of num*/ int reversDigits(int num) { static int rev_num = 0; static int base_pos = 1; if(num > 0) { reversDigits(num/10); rev_num += (num%10)*base_pos; base_pos *= 10; } return rev_num; } /*Driver program to test reversDigits*/ int main() { int num = 4562; printf("Reverse of no. is %d", reversDigits(num)); getchar(); return 0; }

**Time Complexity:** O(Log(n)) where n is the input number

Note that above above program doesn’t consider leading zeroes. For example, for 100 program will print 1. If you want to print 001 then see this comment from Maheshwar.

Try extensions of above functions that should also work for floating point numbers.

### Related Topics:

- Find number of days between two given dates
- How to print maximum number of A’s using given four keys
- Write an iterative O(Log y) function for pow(x, y)
- Visa Interview Experience | Set 6 (On-Campus)
- Count number of ways to reach a given score in a game
- Greedy Algorithm for Egyptian Fraction
- Find length of period in decimal value of 1/n
- How to check if an instance of 8 puzzle is solvable?

Writing code in comment?Please useideone.comand share the link here.