<출처: https://www.programmingsimplified.com/ >
Palindrome in C
Palindrome in C language or C program to check if a string or number is palindrome or not. C program to check if a number is a palindrome or not. A palindrome string is a string that reads the same backward as forward and can be of odd or even length. A palindrome number is a number which is equal to its reverse. Our program works as follows: at first, we copy the entered string into a new string, and then we reverse and compare it with original string. If both of them have the same sequence of characters, i.e., they are identical then the entered string is a palindrome otherwise not. To perform copy, reverse and compare operations we use strcpy, strrev and strcmp functions of "string.h" respectively. If you do not wish to use these functions see C program to check palindrome without using string functions. Some palindrome string examples are "C", "CC", "CCC", "madam", "abba", "ab121ba", "C++&&++C"etc. A palindrome string can be a single word or a phrase or a sentence.
Palindrome program in C language
#include <stdio.h>
#include <string.h>
int main()
{
char a[100], b[100];
printf("Enter a string to check if it is a palindrome\n");
gets(a);
strcpy(b,a);
strrev(b);
if (strcmp(a,b) == 0)
printf("Entered string is a palindrome.\n");
else
printf("Entered string isn't a palindrome.\n");
return 0;
}
Download palindrome program.
Output of C palindrome program:
Palindrome number in C
#include <stdio.h>
main()
{
int n, reverse = 0, temp;
printf("Enter a number to check if it is a palindrome or not\n");
scanf("%d",&n);
temp = n;
while (temp != 0)
{
reverse = reverse * 10;
reverse = reverse + temp%10;
temp = temp/10;
}
if (n == reverse)
printf("%d is a palindrome number.\n", n);
else
printf("%d isn't a palindrome number.\n", n);
return 0;
}
C program for palindrome without using string functions
#include <stdio.h>
#include <string.h>
int main()
{
char text[100];
int begin, middle, end, length = 0;
gets(text);
while (text[length] != '\0')
length++;
end = length - 1;
middle = length/2;
for (begin = 0; begin < middle; begin++)
{
if (text[begin] != text[end])
{
printf("Not a palindrome.\n");
break;
}
end--;
}
if (begin == middle)
printf("Palindrome.\n");
return 0;
}
C palindrome program using functions and pointers
#include <stdio.h>
int is_palindrome(char*);
void copy_string(char*, char*);
void reverse_string(char*);
int string_length(char*);
int compare_string(char*, char*);
int main()
{
char string[100];
int result;
printf("Input a string\n");
gets(string);
result = is_palindrome(string);
if ( result == 1 )
printf("\"%s\" is a palindrome string.\n", string);
else
printf("\"%s\" isn't a palindrome string.\n", string);
return 0;
}
int is_palindrome(char *string)
{
int check, length;
char *reverse;
length = string_length(string);
reverse = (char*)malloc(length+1);
copy_string(reverse, string);
reverse_string(reverse);
check = compare_string(string, reverse);
free(reverse);
if ( check == 0 )
return 1;
else
return 0;
}
int string_length(char *string)
{
int length = 0;
while(*string)
{
length++;
string++;
}
return length;
}
void copy_string(char *target, char *source)
{
while(*source)
{
*target = *source;
source++;
target++;
}
*target = '\0';
}
void reverse_string(char *string)
{
int length, c;
char *begin, *end, temp;
length = string_length(string);
begin = string;
end = string;
for ( c = 0 ; c < ( length - 1 ) ; c++ )
end++;
for ( c = 0 ; c < length/2 ; c++ )
{
temp = *end;
*end = *begin;
*begin = temp;
begin++;
end--;
}
}
int compare_string(char *first, char *second)
{
while(*first==*second)
{
if ( *first == '\0' || *second == '\0' )
break;
first++;
second++;
}
if( *first == '\0' && *second == '\0' )
return 0;
else
return -1;
}
Pointers are used in functions; you can write this program without using them.
'C' 카테고리의 다른 글
C 언어 qsort() 함수 사용 예제 (0) | 2018.10.25 |
---|---|
[네트워크] 소켓프로그래밍 기초, 활용 가이드 링크 (0) | 2018.09.02 |
C 언어, 피보나치 수열 for 문으로 구하기 (0) | 2018.08.06 |
C 언어, 세 정수의 최대공약수 (0) | 2018.08.06 |
C 언어, 두 정수 또는 세 정수 중에서 가장 큰 수나 작은 수 찾기 (0) | 2018.08.06 |