C 语言程序:检查字符串是否为回文


2022 年 4 月 24 日, Learn eTutorial
1414

为了更好地理解,我们始终建议您学习下面列出的C语言编程基础主题

什么是回文字符串?

在 C 语言程序中,字符串是一个以空字符结尾的单词或字符序列。这里我们需要找出字符串是否是**回文**。回文是任何字符串或数字,当它反转时,它仍然是相同的。

例如,字符串“**Malayalam**”是一个回文,因为它从前面或后面读起来都是一样的。同样,“**English**”也是一个字符串,但它不是回文,因为它从后面读起来不相同。

如何在 C 语言中检查回文字符串?

这个 C 程序的逻辑是,首先声明两个字符数组,名为 **string** 和 **revstring**。string 数组包含输入字符串,并使用 **revstring** 存储给定字符串的反转。然后声明并初始化变量 **i**、length 和 flag 为零。'**length**' 是存储字符串长度的变量。

之后,我们需要使用带有条件 **string[i]!= '\0'** 的 for 循环找出给定字符串的长度。这意味着它没有到达字符串的末尾。默认情况下,字符串的最后一个字符是 **'\0'**。

计算出给定字符串的长度后,下一步是计算字符串的反转。查找字符串反转的逻辑是使用 `for 循环`将给定字符串的最后一个字符放置到 **revstring** 数组的第一个位置。
现在 **revstring** 数组包含字符串的反转。之后,我们需要检查 string 和 revstring 是否相等。如果字符串相同,则“设置 **flag=1**”,否则“设置 **flag=0**”。然后检查“**flag=1**”,如果是,则显示字符串是回文;否则,显示字符串不是回文。

算法

步骤 1:包含头文件以使用 C 语言程序中的内置函数。

步骤 2:包含头文件 string.h 以处理字符数组。

步骤 3: 声明 2 个字符数组 **string** 和 **revString**。数组 String 用于保存输入字符串,**revString** 用于保存字符串的反转。

步骤 4: 声明整数变量 Ilengthflag,并设置 length=0flag=0。

步骤 5: 使用 printfgets() 函数接受字符串。

步骤 6: 使用带有条件 string[i]!= '\0'for 循环找出给定字符串的长度。

步骤 7: 然后使用 for 循环将给定字符串的最后一个字符放置到 revString 的第一个字符。

步骤 8: 之后,使用 for 循环比较两个字符串。

步骤 9: 如果 StringrevString 相等,则设置 flag=1,否则设置 flag=0

步骤 10: 如果 flag=1,则显示字符串是回文

步骤 11: 如果 flag=0,则显示字符串不是回文

C 语言源代码

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

void main()
{
  char string[25], revString[25] = {'\0'};
  int i,length = 0, flag = 0;
  fflush(stdin);
  printf("Enter a string\n");
  gets(string);
  for (i = 0; string[i] != '\0'; i++) /*keep going through each */ {
    /*character of the string */
    length++; /*till its end */
  }
  for (i = length - 1; i >= 0; i--) {
    revString[length - i - 1] = string[i];
  }


   for (flag  = 1, i = 0; i < length; i++)
   {
      if (revString[i] != string[i])
      flag  = 0;
   }

   if (flag == 1)
      printf("%s is a palindrome.", string);
   else
      printf("%s is not a palindrome", string);

   return 0;
}
   
                                      

输出

RUN 1
Enter a string
madam
madam is a palindrome

RUN 2

Enter a string
Madam
Madam is not a palindrome

RUN 3

Enter a string
good
good is not a palindrome