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