Palindrome is a number or sequence of characters which reads same backward and forward. If we reverse a palindrome number, the reversed and original number will be same. The first C program checks whether a number is palindrome by reversing the number. The second program does the same thing without reversing the number.
By reversing the number:
#include <stdio.h> int reverse(int n) { int r = 0; while(n) { r = r * 10 + n % 10; n = n / 10; } return r; } void main() { int num = 0; printf("Enter an integer: "); scanf("%d", &num); if(num == reverse(num)) printf("%d is palindrome\n", num); else printf("%d is not palindrome.\n", num); }
Without reversing the number
#include <stdio.h> #include <math.h> int getdigit(int num, int n) { int r, t1, t2; t1 = pow(10, n+1); r = num % t1; if (n > 0) { t2 = pow(10, n); r = r / t2; } return r; } int number_len(int n) { int len = 0; while(n) { len++; n /= 10; } return len; } void main() { int num = 0, i, len, flag = 1; printf("Enter an integer: "); scanf("%d", &num); len = number_len(num); for (i = 0; i < len/2; i++) { if(getdigit(num, i) != getdigit(num, len - i - 1)) { flag = 0; break; } } if(flag) printf("%d is palindrome.\n", num); else printf("%d is not palindrome.\n", num); }
Outout:
Enter an integer: 4232 4232 is not palindrome. Enter an integer: 65756 65756 is palindrome.