In this blog post, you will learn how to write a C program to check whether the number is a palindrome or not. Before writing the code for the palindrome number I will first explain what the palindrome number is.
The primary prerequisites to understanding this C Program:
- For loop in C.
- do-while loop in C.
- while loop in C.
- If-else branching statement.
- C function and types.
What is a Palindrome Number?
A number that remains the same when the digits are reversed is called a palindrome number. For example, 11, 121, 131, etc; are palindrome numbers. However, 123, 300, etc; are not.
Consider the below image for a better understanding of the palindrome number.
Steps to check palindrome number in C
Step 1: Ask the user to enter a numeric number to check for Palindrome in C. Call it the original number.
Step 2: Reverse the original number.
Step 3: Compare the original number with the reverse value.
Step 4: If they matched, then it is a palindrome number. Otherwise, it is not a palindrome number in C programming.
Example 1:-
Step 1: Suppose enter number is 121.
Step 2: Reverse the digits of 121. Reversing 121 gives 121.
Step 3: Compare the original number 121 with the reverse number 121.
Step 4: Both original and reverse numbers same so 121 is a palindrome number.
Example 2:-
Step 1: Suppose enter number is 75.
Step 2: Reverse the digits of 75. Reversing 75 gives 57.
Step 3: Compare the original number 75 with the reverse number 57.
Step 4: Both original and reverse numbers are not the same so 75 is not a palindrome number.
Flowchart of Palindrome Program using while loop:
C Program to check palindrome numbers in C:
Below C program ask the user to enter the value of ‘num’. And after getting the value it checks whether ‘num’ is palindrome or not.
#include<stdio.h> int main(void) { int num, tmp, rev = 0, rem; printf("Enter a number = "); scanf("%d", &num); tmp = num; while(tmp != 0) { rem = tmp % 10; // get the last digit from tmp rev = rev * 10 + rem; tmp /= 10; // remove the last digit from tmp } if(num == rev) { printf("%d is a palindrome number\n", num); } else { printf("%d is not palindrome number\n", num); } return 0; }
Output1:
Enter a number: 121
121 is palindrome number.
Explanation of the C Program to check whether the number is a Palindrome:
Step 1
— Give the number and store it in variable num:
Step 2
— Reverse the Given number:
Step A:
Isolate the last digit in the number:
With the help of the % operator at every execution we can extract the last digit of a given number. So, suppose 121 is an integer number. If we perform the modulo division on it with 10, then we get the 1 as a remainder. That means we are successfully able to extract the last digit of a given integer number.
rm = tmp%10;
Step B:
Append the last digit to reverse:
Now append the extracted last digit, rm to rev using a formula ((10*rev) + rm). It would look like the below expression,
rev= (rev* 10) + rm;
Step C:
Remove the last digit from the number:
Now you have already used the last digit of the given number tmp, so remove this digit. To remove the last digit from a given integer number, you must divide it by 10.
tmp = tmp/10;
The above expression removes the last digit from the tmp; it happens because we are performing an integer division that rounds results down to the nearest integer, for example, 121 / 10 => 12.
Now you need to do the same steps till tmp becomes 0 which means there are no new digits left to be reversed in tmp.
Step 3
— Compare Reverse with original number:
If rev equals the (original number) num then it’s a palindrome number” otherwise it is not a palindrome number.
Find a palindrome using the function:
In this example code we will create a function isPalindrome()
that will inform number is palindrome or not. That means if the given integer is ‘a’, return 1 if ‘a’ is a palindrome, and 0 otherwise.
Example 1: Input: x = 11 Output: 1 Explanation: 11 reads as 11 from left to right and from right to left. Example 2: Input: x = 21 Output: 0 Explanation: From left to right, it reads 21. From right to left, it becomes 12. Therefore it is not a palindrome.
/* C Program to Find a palindrome using the function: */ #include <stdio.h> int isPalindrome(int a) { int rev = 0, rem = 0; int tmp = a; while(tmp != 0) { // get the last digit from tmp rem = tmp % 10; rev = rev * 10 + rem; // remove the last digit from tmp tmp /= 10; } return (rev == a); } int main() { int num = 0; printf("Enter a number = "); scanf("%d", &num); //call the function to check palindrome number const int palindromeNum = isPalindrome(num); if(palindromeNum) { printf("%d is a palindrome number\n", num); } else { printf("%d is not palindrome number\n", num); } return 0; }
Output:
Enter a number: 121
121 is palindrome number.
Find Palindrome using String Conversion:
In this example code we will create a function isPalindrome()
that convert the integer number to a string. The function returns 1 if ‘x’ is a palindrome, otherwise returns 0.
/* C Program to Find a palindrome using the String Conversion: */ #include <stdio.h> #include<string.h> int isPalindrome(int x) { char str[20]; //assume number is palindrome int palindrome = 1; sprintf(str, "%d", x); const int length = strlen(str); for (int i = 0; i < length / 2; ++i) { if (str[i] != str[length - i - 1]) { //Not palindrome number palindrome = 0; break; } } return palindrome; } int main() { int num = 0; printf("Enter a number = "); scanf("%d", &num); //call the function to check palindrome number const int palindromeNum = isPalindrome(num); if(palindromeNum) { printf("%d is a palindrome number\n", num); } else { printf("%d is not palindrome number\n", num); } return 0; }
Recommended Articles for you:
- C Program to check palindrome number using recursion.
- C Program to Check whether the given String is Palindrome.
- Best Gifts for the programmer and techies.
- C Program to Find the Length of a String using strlen().
- C Programming Courses And Tutorials.
- CPP Programming Courses And Tutorials.
- find all prime numbers up to n using trial division and Sieve of Eratosthenes algorithm.
- C Program to find prime factors of a number.
- C Program to print Twin prime numbers between two ranges.
- C program to calculate the power of a number.
- How to find whether a given number is prime number in C?
- sqrt function in C.
- C program to find all roots of a quadratic equation using switch case.
- C program to find the roots of a quadratic equation.