如果字符串反转后保持不变,则该字符串可能是回文。让我们看看如何使用内置函数和不使用内置函数来编写 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;
}

在这里,我们使用了 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
使用内置函数检查给定字符串是否为回文
在此 程序中,我们使用内置函数 strcpy、strrev 和 strcmp。首先,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