C 程序:查找字符串的长度并检查是否为回文


2022年3月27日, Learn eTutorial
1449

什么是回文字符串?

回文指任何字符串或数字,当它反转时保持不变。例如,字符串“Malayalam”是一个回文字符串,因为它从前往后读或从后往前读都一样。另一个例子是“madam”、“refer”、“level”。相应地,“English”也是一个字符串,但它不是回文,因为它从后往前读时不一样。请参考前面的程序编号“28”以了解更多关于回文的信息。

如何在 C 语言中实现回文检查和字符串长度计算?

在这个 C 程序中,我们需要找到字符串的长度。C 程序中的字符串是一个语句或由空格结尾的字符排列。此外,我们还需要检查字符串是否为回文。首先,我们必须通过计算字符串中的字符数来计算字符串的长度。这只需通过每遇到一个字符就将计数器变量加一来完成。

所以最后,我们得到了字符串中的字符数。然后我们将使用 For 循环找出字符串的反转。之后,我们将检查“revString”和给定的“string”是否相等。如果字符串相似,则显示该字符串为回文;否则,我们将显示该字符串不是回文。

算法

步骤1: 包含头文件,以便在C程序中使用内置函数。

步骤 2:声明字符数组 'string' 和 'revString'。

步骤 3: 声明整型变量 i,length,flag

步骤 4:设置 length=0,flag=0

步骤 5: 通过调用函数 fflush(stdin) 清除输出缓冲区。

步骤 6: 使用 gets() 函数读取字符串。

步骤 7: 使用 for 循环,条件为 string1[i] != '\0',将 length 递增 1,以获取字符串的长度。

步骤 8: 然后显示字符串及其长度,分别为 String length

步骤 9:i=length-1 赋值。

步骤 10: 使用另一个 for 循环,条件为 i >= 0,执行步骤 11。

步骤 11: 赋值 revString[length-i-1] = string[i]

步骤 12: 将 'i' 减 1,并重复步骤 10。

步骤 13:i=0 赋值。

步骤 14: 使用另一个 for 循环,条件为 i < length,执行步骤 15。

步骤 15: 检查如果 revString[i] == string[i] 则设置 Flag=1,否则设置 Flag=0

步骤 16: 检查如果 Flag == 1 则显示字符串是回文,否则执行步骤 17。

步骤 17: 显示字符串不是回文。

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 */
  }
  printf("The length of the string \'%s\' = %d\n", string, length);
  for (i = length - 1; i >= 0; i--) {
    revString[length - i - 1] = string[i];
  }
  /*Compare the input string and its reverse. if both are same then we can tell it is palindrome, else not an palindrome */
  for (i = 0; i < length; i++) {
    if (revString[i] == string[i])
      flag = 1;
    else
      flag = 0;
  }
  if (flag == 1)
    printf("%s is a palindrome\n", string);
  else
    printf("%s is not a palindrome\n", string);
}
                                      

输出

Enter a string
madam

The length of the string 'madam' = 5
madam is a palindrome

RUN2

Enter a string
good
The length of the string 'good' = 4
good is not a palindrome