A palindrome is a phrase that reads the same backward as forward, ignoring whitespace and punctuation. For example, “Madam, I’m Adam” and “Are we not drawn onward, we few? Drawn onward to new era?” are palindromes. Write a program that will determine whether a string entered from the keyboard is a palindrome.
Difficulty level
This exercise is mostly suitable for students
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void main(void)
{
char sentence[500]; /* Stores the sentence to be tested */
char sentence_chars[500]; /* Stores the sentence without punctuation and spaces */
int j = 0; /* Index to character position */
int length = 0; /* Length of a string */
int i;
printf("Enter a sentence to be tested:\n");
gets(sentence);
/* Copy only letters as lowercase */
for(i = 0 ; i< strlen(sentence) ; i++)
if(isalpha(sentence[i]))
sentence_chars[j++] = tolower(sentence[i]);
sentence_chars[j] = '\0'; /* Append string terminator */
length = strlen(sentence_chars); /* Get the satring length */
/* Compare matching characters in the string */
/* If any pair are not the same, then it's not a palindrome */
for(i = 0 ; i<length/2 ; i++)
if(sentence_chars[i] != sentence_chars[length-1-i])
break;
if(i==length/2)
/* If we arrive here all matching pairs of characters are equal */
printf("\n The sentence you entered is a palindrome.\n");
else
printf("\n The sentence you entered is not a palindrome.\n");
}
Back to the list of exercises
Looking for a more challenging exercise, try this one !!
Checking palindrome words using functions