C 语言检查给定字符串是否为回文的程序

如果字符串反转后保持不变,则该字符串可能是回文。让我们看看如何使用内置函数和不使用内置函数来编写 C 语言检查给定字符串是否为回文的程序。

使用 for 循环检查给定字符串是否为回文的 C 语言程序

此字符串回文程序允许用户输入一个字符数组和一个字符值。接下来,它将检查用户指定的字符数组是否为回文字符串。

#include <stdio.h>
#include <string.h>
 
int main()
{
  	char str[100];
  	int i, len, flag;
  	flag = 0;
 
  	printf("\n Please Enter any String :  ");
  	gets(str);
  	
  	len = strlen(str);
  	 	   	
  	for(i = 0; i < len; i++)
	{
		if(str[i] != str[len - i - 1])
		{
			flag = 1;
			break;	
		} 
	}
	if(flag == 0)
	{
		printf("\n %s is a Palindrome String", str);
	}
	else
	{
		printf("\n %s is Not a Palindrome String", str);
	}	
	
  	return 0;
}
Program to Check the given string is Palindrome or not 1

在这里,我们使用了 For 循环来迭代每个字符并检查回文条件

for(i = 0; i < len; i++)
{
	if(str[i] != str[len - i - 1])
	{
		flag = 1;
		break;	
	} 
}

str[] = wow
len = 3
Flag = 0

For 循环 – 第一次迭代:for(i = 0; i < len ; i++)
条件为 True,因为 0 < 3。

在 For 循环内,我们使用 If 语句来检查 str[1] 是否不等于 str[len – i – 1]
if(str[i] != str[len – i – 1]) => if(str[0] != str[3 – 0 – 1])
if(w != w) – 条件为 False。因此,Flag 仍为 0

第二次迭代:for(i = 1; 1 < 3 ; 1++)
if(str[i] != str[len – i – 1]) => if(str[1] != str[3 – 1 – 1])
if(o != o) – 条件为 False。因此,Flag 仍为 0

第三次迭代:for(i = 2; 2 < 3 ; 2++)
if(str[i] != str[len – i – 1]) => if(str[2] != str[3 – 2 – 1])
if(w != w) – 条件为 False。因此,Flag 仍为 0

接下来,我们使用 If Else 语句来检查 Flag 值是否为 0。请记住,如果任何循环中的条件为 True,则 Flag 值将变为 1,并且它将不是回文字符串。

我再检查一个。

 Please Enter any String : tutorial

 tutorial is Not a Palindrome String

C 语言检查给定字符串是否为回文的示例 2

此字符串回文程序与上面相同,但我们稍微改变了逻辑。

#include <stdio.h>
#include <string.h>
 
int main()
{
  	char str[100];
  	int i, len, stratIndex, endIndex;
 
  	printf("\n Please Enter any Text :  ");
  	gets(str);
  	
  	len = strlen(str);
  	endIndex = len - 1;
	    	 	   	
  	for(i = 0; i <= endIndex; i++)
	{
		if(str[i] != str[endIndex])
		{
			break;	
		} 
		endIndex--;		
	}
	if(i >= endIndex)
	{
		printf("\n %s is a Palindrome String", str);
	}
	else
	{
		printf("\n %s is Not", str);
	}	
	
  	return 0;
}

 Please Enter any Text : aakkaa

 aakkaa is a Palindrome String

使用反转检查给定字符串是否为回文的 C 语言程序

在此程序中,我们正在使用传统方法。首先,我们将其反转,然后我们将反转的字符串与原始字符串进行比较。我建议您参考 反转文章来理解字符串反转涉及的步骤。

#include <stdio.h>
#include <string.h>
 
int main()
{
  	char str[100], revstr[100];
  	int i, j, len, flag;
  	flag = 0;
 
  	printf("\n Please Enter any Text :  ");
  	gets(str);
  	
  	len = strlen(str);
  	j = 0;

  	// Reverse	   	
  	for(i = len - 1; i >= 0; i--)
	{
		revstr[j++] = str[i];
	}
	revstr[i] = '\0';

	// Comparing Reverse and Original
	for(i = 0; i < len; i++)
	{
		if(str[i] != revstr[i])
		{
			flag = 1;
			break;	
		} 
	}
	if(flag == 0)
	{
		printf("\n %s is a Palindrome String", str);
	}
	else
	{
		printf("\n %s is No", str);
	}	
	
  	return 0;
}
 Please Enter any Text :  madam

 madam is a Palindrome String

使用函数检查给定字符串是否为回文的 C 语言程序

此字符串回文程序与第二个示例相同。不过,这次我们使用 函数概念来分离逻辑。

#include <stdio.h>
#include <string.h>

void isPalStrFind(char str[]);
 
int main()
{
  	char str[100];
 
  	printf("\n Please Enter any Text :  ");
  	gets(str);
  	
  	isPalStrFind(str);	
	
  	return 0;
}

void isPalStrFind(char str[])
{
	int i = 0;
	int len = strlen(str) - 1;
	
	while (len > i)
	{
		if(str[i++] != str[len--])
		{
			printf("\n %s is Not", str);
			return;
		}
	}
	printf("\n %s is a Palindrome String", str);
}
 Please Enter any Text :  aaaabbbaaaa

 aaaabbbaaaa is a Palindrome String

使用内置函数检查给定字符串是否为回文

在此 程序中,我们使用内置函数 strcpystrrevstrcmp。首先,C 编程的 strcpy 将用户给定的字符串复制到一个新的字符串中。接下来,我们使用 strive 来反转它。最后,我们使用 strcmp 将原始字符数组与反转后的字符串进行比较。

#include <stdio.h>
#include <string.h>
 
int main()
{
  	char str[100], revstr[100];
  	int flag;
 
  	printf("\n Please Enter any Str :  ");
  	gets(str);

  	// Copy to revstr
  	strcpy(revstr, str);

  	strrev(revstr); // reverse

  	// Comparing
	flag = strcmp(str, revstr); 

	if(flag == 0)
	{
		printf("\n %s is a Palindrome String", str);
	}
	else
	{
		printf("\n %s is Not", str);
	}	
	
  	return 0;
}
 Please Enter any Str :  rar

 rar is a Palindrome String